시스템 해킹을 위한 기초 지식은 다음과 같다.
1. 운영체제
2. CPU와 레지스터
3. 메모리
4. 어셈블리어
5. 스택
1. 운영체제
- 개념
운영체제란 사용자가 컴퓨터 시스템을 손쉽게 사용하도록 하고, 시스템 자원( 기억장치, 프로세서, 입출력 장치, 정보, 네트워크 등 )을 효율적으로 관리할 수 있도록 하는 프로그램 집합
- 기능
> 사용자 명령 인터페이스
사용자와 시스템의 대화 수단.
셸, GUI( Graphic User Intercafe )
> 서브 시스템 관리자
# 메모리관리자
프로그램의 메모리 요청에 대해 적합성을 점검하고, 적합한 경우 메모리를 할당한다.
또한 할당된 메모리를 다른 프로그램이 접근하지 못하게 괸라하고 보호하며, 프로그램 종료 시에는 할당된 메모리를 회수한다.
# 프로세서 관리자
명령어들이 체계적이고 효율적으로 실행되도록 작업 스케줄링하고 사용자의 작업 요청을 수용하거나 거부한다.
# 장치 관리자
프린터, 디스크 드라이버, 모뎀, 모니터 등, 시스템 내의 모든 장치를 프로그램에 할당하거나 회수한다.
# 파일 관리자
시스템 내의 데이터, 응용 프로그램 등의 모든 파일에 사용자별로 파일 접근 권한을 부여하고, 접근 권한에 따라 파일을 할당하고 해제한다.
# 네트워크 관리자
네트워크에서 접근 가능한 CPU, 메모리, 프린터 등과 같은 자원을 관리한다.
2. 윈도우
- 커널
커널은 운영체제의 중심에 위치하며, 운영체제에서 어떤 작업을 시작하더라도 커널의 동작에 의해 제어된다. 즉, 커널은 인터럽트 처리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 프로그래밍 인터페이스 제공 등 운영체제의 기본 기능을 제공하는 핵심이라 할 수 있다.
- 커널 구조
커널모드는 기본적으로 사용자가 접근할 수 없는 영역으로, 프로그램의 실행과 관련한 기본관리 시스템이 여기에 존재한다. 윈도우는 프로그램을 만들고 실행하는 모든 과정이 사용자 모드에서만 가능하도록 설계되었으나, 완벽하게 구현되지는 않았다. 예를 들면 윈도우에서는 마이크로 커널이 HAL을 무시하고 하드웨어와 통신할 수 있는 가능성이 있으며, 이는 윈도우가 링 구조를 완전히 적용한 운영체제가 아니라는 것을 보여준다. 그리고 이런 점이 보안의 허점을 만들어낸다.
- 윈도우 시스템의 구조
> HAL( Hardware Abstraction Layer )
윈도우에서는 리눅스/유닉스에서와 달리 새로 개발된 하드웨어를 시스템에 장착해도 드라이버 개발자가 새로운 장치에 대한 모든 것을 알 필요가 없다. 드라이버 개발자와 하드웨어 개발자는 윈도우에서 제시한 기본 표준만 따르면 되는데 그 표준이 HAL이다.
> 마이크로 커널( micro kernel )
본래 커널은 프로세스의 스케줄링이나 메모리 관리, 데이터의 입출력, 하드웨어 제어 같은 일을 했다. 그러나 윈도우에서는 이를 여러 관리자에게 분담시키고 커널은 하드웨어와의 통신만 제어하는 최소한의 커널이 되었다.
> 입출력 관리자
시스템의 입출력을 제어한다.
장치 드라이버 사이에서 메시지를 전달한다. 또한 응용 프로그램이 하드웨어와 곧바로 통신할 수 있는 통로를 제공한다.
> 객체 관리자
윈도우는 파일, 포트, 프로세스, 스레드 등의 모든 것이 객체로 정의된다.
객체 관리자는 이런 각 개체들에 대한 정보를 제공한다.
> 보안 참조 관리자
각 데이터나 시스템 자원의 제어를 허가하거나 거부함으로써 시스템의 강제 보안 설정을 책임진다.
> 프로세스 관리자
스레드를 생성하고 요청에 따라 처리한다.
> 로컬 프로시저 호출 관리자
각 프로세스는 서로의 메모리 공간을 침범하지 못하므로 프로세스 간 통신이 필요한 경우에 이를 대신해 줄 수 있는 장치가 필요하다. 그 장치가 로컬 프로시저 호출 관리자다.
> 가상 메모리 관리자
응용 프로그램의 요청에 따라 RAM의 메모리를 할당하고, 가상 메모리의 페이징을 제어한다.
> 그래픽 장치 관리자
화면에 선이나 곡선을 그리거나 폰트 등을 관리한다.
> 기타 관리자
캐시 관리자, PNP 관리자, 전원 관리자 등이 있다.
윈도우는 여러 응용 프로그램을 실행하기 위해 몇 가지 서브 시스템을 동작하는데, 가장 기본 서브 시스템으로 Win32가 있다. 이는 32비트 응용 프로그램이 동작할 수 있게 도와주고, 기본 윈도우 사용자 인터페이스를 제공한다. 즉, 비디오 디스플레이, 키보드, 마우스 등을 지원한다.
이외에 보안 서브 시스템과 유닉스 운영체제에 기반을 둔 일련의 표준 운영체제 인터페이스로 POSIX가 있다. 보안 시스템은 사용자가 로그인할 때 데이터를 보호하고, 운영체제가 이를 제어할 수 있도록 만든다.
3. 리눅스/유닉스
- 커널
> 모놀리식 커널
거대한 커널이 모든 기능을 수행하도록 만들어졌으며, 안정적이지만 문제가 발생할 경우 부분 수정이 어렵다.
> 마이크로 커널
여러 개의 모듈이 모여 하나의 커널을 이룬다.
개별 모듈의 업로드와 언로드가 가능하다.
각 모듈의 권한이 동일하여 잘못 된 모듈을 업로드할 경우 커널 전체가 망가질 수 있다.
- 구조
> 프로세스 제어
프로세스 간 통신, 스케줄링, 메모리 관리를 구현한다.
> 장치 드라이버
하드웨어와 소프트웨어를 연결해주는 인터페이스를 제공한다.
> 파일 서브 시스템
하드 디스크와 같은 저장 공간에 유닉스의 파일을 저장하고 읽는 역할을 한다.
> 셸
응용프로그램에서 명령을 받아 커널에 전송하는 역할을 하며, 사용자의 키보드 입력을 인식하고 해당 프로그램을 수행하기도 한다.
- 셸 기능
* 자체의 내장 명령어 제공
* 입력/출력/오류의 방향 변경
* 와일드카드
* 파이프라인
* 조건부/무조건부 명령 열 작성
* 서브 셸 생성
* 백그라운드 처리
* 셸 스크립트 작성
'NCS보안3기 > 시스템 해킹' 카테고리의 다른 글
[System Hacking] Stack Buffer Overflow (0) | 2017.05.16 |
---|---|
[System Hacking] 메모리 (0) | 2017.05.16 |
[System Hacking] CPU와 레지스터 (0) | 2017.05.16 |