본문 바로가기

System

윈도우 PE(Portable Execute) PE(Portable Execute) PE는 윈도우에서 사용되는 파일들의 포맷이다. 실행파일, 폰트파일, 드라이브파일, DLL 파일 등이며 PE 포맷을 사용한 이유는 윈도우 계열에서 버전이 달라져도 실행할 수 있게 호환성을 높이기 위해서이다. 그래서 PE 포맷을 뷰어로 확인할 경우 DOS 헤더를 확인할 수 있으며 MS-DOS에서도 해당 파일을 실행할 수 있게 되어있다. 물론 그래픽이나 API요소를 전부 표현하지 못하고 DOS 운영체제에서 구동될 수 있는 최대한으로 표현한다. 즉, 실행은 된다. 다만 모든 기능을 최신 운영체제에서 사용하듯이 쓰기는 어렵다. 반대로 DOS 운영체제에서 사용하던 프로그램을 윈도우10에서도 실행이 가능하다. PE 포맷의 파일 종류에는 실행, 드라이버, 라이브러리, 오브젝트 총 .. 더보기
윈도우 인증 시스템 윈도우는 로그인 시 윈도우 로그인 프로세스인 winlogon을 실행한다. winlogon은 msgina.dll이라는 GINA(Graphical Identification aNd Authentication) 프로그램을 구동하여 검증 위해서 아이디를 LSA(Local Security Authority)에 전달한다. NTLM(NT Lan Manager) 값과 SAM에 저장된 NTLM 값을 비교하여 같으면 SRM에게 권한을 부여한다. winlogon은 단순히 로그인 기능만 하는것이 아닌 윈도우 스테이션과 데스크탑 보호, 표준 SAS(Secure Attention Sequence), SAK(Secure attention key) 인식, SAS 루틴 디스패칭, 사용자 프로필 로딩, 사용자 쉘에 대한 보안 할당, 화.. 더보기
리눅스 리다이렉션, 파이프 리다이렉션(Redirection) 리다이렉션은 표준 출력을 사용자가 원하는 것으로 바꿀 수 있는 것이다. 예를 들면 특정 명령 수행할 때 해당 명령이 화면에 출력되는 것이 아닌 파일로 출력하고 싶을 때 사용할 수 있다. 위의 그림은 ps -a 명령을 그냥 실행한 경우와 리다이랙션을 이용하여 출력방향을 바꾼 경우이다. test라는 파일로 리다이렉션한 결과 test 파일이 생성된 것을 확인할 수 있다. test 파일의 내용은 다음과 같다. 이처럼 리다이렉션은 표준 출력의 방향을 바꿀 수 있다. 리다이렉션과 여러 명령어들을 조합하여 원하는 값만 파일로 출력하게 만들 수 있다. [1,2]> 출력 방향을 전환하여 파일이 없으면 새로 만든다. 앞의 숫자 [1,2]를 넣을 수 있는데 1은 일반적인 표준 출력을 의미한.. 더보기
리눅스 작업 스케줄 관리 Cron Cron cron은 일정한 날짜와 시간에 따라 사용자가 지정한 작업을 수행하는 리눅스 작업 스케줄러이다. cron 프로세스는 /etc/crontab을 읽어서 설정된 작업을 수행한다. cron은 보안 분야에서 중요하다. 첫 번째로 주기적인 점검, 업데이트가 필요할 경우 cron으로 스케줄 등록 후 자동으로 일정 주기마다 점검이 진행되게 할 수 있다. 두 번째로 공격자가 cron을 악용하여 cron 설정에 악성코드를 주기적으로 실행하게 만들어 악용할 수 있다. crontab을 통해 작업 스캐줄을 설정할 수 있다. [분 시 일 월 요일 명령수행유저 명령]의 순서로 작성하면 설정된 주기마다 명령을 수행한다. 더보기
리눅스 Booting, Run level 리눅스에서 전원이 들어오면 제일 먼저 하는 작업은 보조기억장치에 있는 운영체제의 커널을 주기억장치에 올리는 작업을 한다. 이때 사용된는 프로그램은 로더(Loader)이다. 로더 프로그램에서 주요 기능은 LILO(LInux LOader)가 한다. LILO는 리눅스의 부트로더인데 LILO 실행 시 '/etc/lilo.conf'라는 파일을 읽어서 실행된다. 하지만 최근에는 LILO 보다 GRUB 부트로더를 사용한다. '/boot/grub/grub.conf'라는 설정파일을 읽어서 실행된다. 우분투의 경우 '/boot/grub/grub.cfg'로 존재한다. 가끔 우분투 설치 시 GRUB를 찾을 수 없다고 나올 떄가 있는데 이때는 체험모드로 우분투 실행 후 bootrepair를 설치 후 해당 프로그램으로 GRUB를.. 더보기
리눅스 파일 시스템 구조 리눅스 파일 시스템 구조 리눅스 파일 시스템의 구조는 부트블록(Boot block)으로 시작되며 부트 블록은 컴퓨터 시스템을 부팅하기 위한 부팅에 관련된 이미지를 갖고 있다. 리눅스 운영체제가 처음 실행되면 부트블록을 제일먼저 읽어서 리눅스를 가동한다. 부트블록이 주기억장치에 모두 올라가게 되면 리눅스 운영체제는 제일 처음 init 프로세스를 기동하게 되고, init 프로세스의 PID는 1번이 부여된다. 부트 블록 : 파일 시스템으로부터 리눅스 커널을 적재시키기 위한 프로그램이다. 슈퍼 블록 : 슈퍼블록은 파일 시스템의 크기, 블록 수 등 이용 가능한 빈 블록 리스트와 빈 블록 리스트에서 그 다음 빈 블록을 가리키는 인덱스 정보가 있다. 이외에 inode 목록의 크기, 파일 시스템에 있는 빈 inode의.. 더보기
리눅스 구조 리눅스의 기능 작업 관리자(Task Manager) 작업의 생성, 실행, 상태관리, 스케줄링, 시그널 처리, 프로세스 간 통신 등의 서비스를 제공한다. 메모리 관리자(Memory Manager) 세그먼테이션, 페이징, Swap 서비스를 통한 물리 메모리의 가상 메모리를 관리한다. 파일 시스템 관리자(File System Manager) 파일 생성/삭제, 접근 제어, 디렉터리 관리, 슈퍼블록 관리 등의 서비스를 제공한다. 네트워크 관리자(Network Manager) 소켓, TCP/IP, 프로토콜 스택 관리 등의 서비스를 제공한다. 장치 관리자(Device Manager) 디스크, 각종 카드, 외부 인터페이스 등을 제어하는 드라이버 관리 서비스를 제공한다. 리눅스 운영체제의 핵심 구성요소 커널(Kernel.. 더보기
CPU 스케줄링 기법 CPU 스캐줄링 컴퓨터의 자원을 효율적으로 상용하기 위해서 정책을 계획하는 것이다. 특정 자원을 요청하고 있는 프로세스를 대상으로 CPU 자원을 할당해 주는 순서를 정해주는 것이다. 사용 목적은 다음과 같다. CPU 활용 극대화 : CPU의 유휴 시간 최소화 응답시간 단축 : 프로세스 평균 응답 시간 단축 공평한 자원 활용 : 주어진 기간 동안 특정 자원 사용 효율화 Multi-tasking 효율화 : 다중 프로세스의 공평한 처리 스케줄러 역할에 따른 구분 장기 스케줄러 상위 스케줄링으로 어떤 작업이 시스템의 자원들을 차지할 것인지 결정한다. 결정된 작업은 큐에 적재된다. 중기 스케줄러 어떤 프로세스들이 CPU를 할당받을 것인지 결정한다. CPU를 사용하려는 프로세스 간 중재하여 일시적으로 보류하거나 재.. 더보기