Sh4n3e
윈도우시스템 조사 - 활성시스템 조사 본문
윈도우 시스템의 경우 2000, XP, 2003, VISTA, 2008, 7 등의 버전 별로 휘발성 데이터 수집에 활용할 수 있는 시스템 도구 및 API와 비휘발성 데이터가 저장되는 위치 또는 형태가 다를 수 있다. 따라서 윈도우 시스템을 조사할 경우 이러한 특성을 고려하여 진행해야 한다.
가. 시스템 정보
1) 시스템 시간 정보
시스템 정보를 수집할 때, 가장 먼저 시스템 시간이 조사 시간과 일치하는지를 확인해야 한다. 이는 시스템에 저장되어 있는 시간 정보를 정확히 파악하는데 도움을 주며, 시스템에서 수행한 작업들의 타임라인을 밝히는데 이용된다.
아래는 윈도우에서 날짜와 시간을 함께 확인할 수 있게 해주는 명령어 이다.
CMD> date /t & time /t |
휴대전화의 시간과 같은 정확한 시간과 시스템의 시간 사이의 오차를 파악하고, 현재 시간과 시스템의 시간이 다를 경우 추후 진행할 조사에서 시간 오차를 고려하면서 조사를 진행한다.
2) 사용자 계정 정보
포렌식 조사에서 사용자를 밝히는 것이 매우 중요하다. 이러한 관점에서 현재 시스템에 등록된 사용자의 계정 정보를 파악할 필욯가 있다. 특히 프로세스나 파일의 소유자 정보와 연관시켜서 조사를 지행할 수 있고, 인터넷 익스플로러 사용 로그인 index.dat나 휴지통 파일도 계정별로 생성되기 때문에 해당 시스템에 등록된 계정 정보를 파악할 필요가 있다. 시스템 계정 정보는 고려대학교 디지털포렌식연구센터에서 개발한 LIDA의 툴을 이용하며, 시스템에 로그인한 계정 정보는 psloggedon을 이용하여 정보를 획득한다.(http://technet.microsoft.com/en-us/sysinternals/bb897574.aspx)
3) 프로세스 정보
프로세스는 메모리에 적재되어 실행 중인 컴퓨터 프로그램을 의미하며, 현재 시스템의 동작 상황을 파악할 수 있는 중요한 정보이다. 특히 악성 코드의 실행 과정을 규명하는데 유용하다.
실행중인 프로세스를 조사하기 위해서는 sysinsternal에서 제작한 Process Explorer를 사용한다. 프로세스 간의 호출 관계를 파악하여 악성 코드를 실행한 프로세스를 탐지할 수 있으며, 프로세스의 CPU 사용량을 조사할 수 있다. 특히 시스템 프로세스의 경우 정상 경로가 아닌 특이한 폴더 경로에서 실행되고 있을 경우, 시스템 프로세스를 가장한 악성 코드가 실행되고 있을 가능성이 존재한다.
악성 코드는 시스템의 중요 파일에 접근하여 내용을 변경하는데 윈도우 시스템은 프로세스가 접근하는 파일들에 대한 목록을 핸들(Handle)로 관리한다. 따라서 프로세스가 접근하고 있는 자원에 대해서 조사해야 한다.
만약 악성 코드가 ACPACK이나 UPX와 같은 알고리즘을 통해서 패킹되어 있지 않다면, 내부의 문자열에 공격자의 IP와 같은 정보와 특정 포트를 여는 것과 같이 악성 행위를 유추할 수 있는 문자열을 확인할 수 있다. 악성 코드가 패킹되어 있다면 해당 알고리즘에 적합한 Unpacker를 사용해서 패킹을 해제하고 분석을 수행해야 한다. 일반적으로 악성 코드는 역공학을 어렵게 하기 위해서 패킹하기 떄문에 패킹된 프로그램은 추가적인 분석을 통해서 악성 여부를 판단해야 한다.
실행되는 프로그램의 유해성은 장시간에 걸친 행위 분석을 통해 파악할 수 있ㄴ다. 이러한 문제를 해결하기 위해 프로그램을 배포할 때 전자 서명을 하여 배포하는 Code Signing 기법이 있으며, 윈도우 시스템이 프로그램을 실행할 때 이를 검증하게 할 수 있다. 따라서 특정 프로세스의 Code Sign을 확인하면 추가적인 분석을 수행할 것인지를 빠르게 판단할 수 있다.
프로세스 조사 과정 중에서 발견된 프로세스가 어떠한 역할을 수행하는지 확인해야 할 필요가 있는데, 프로세스 이름과 설명 및 악성 여부를 판별할 수 있도록 정보를 제공하는 웹 사이트가 있다.(http://www.processlibrary.com)
윈도우 시스템은 XP 이상 버전에서 로그 파일의 일종인 프리패치(Prefetch) 파일을 생성한다. 프리패치 파일은 시스템 부팅 및 응용 프로그램의 실행시간을 단축하기 위해 여러 가지 정보가 저장되어 있다. 이 파일에는 실행 파일의 이름, 실행 횟수, 참조 파일 목록, 실행 파일의 최종 실행시간 등 디지털 포렌식 관점에서 중요한 정보들이 포함되어 있다. 따라서 윈도우즈 프리패치 파일을 조사하여 악성 프로그램의 실행 여부를 판단할 수 있다.
윈도우 프리패치 파일은 아래의 경로에 저장되어 있다.
C:\windows\Prefetch |
나. 네트워크 정보
1) 네트워크 장치 정보
네트워크 장치는 주로 사용되는 이더넷(Ethernet) 카드, IEEE 802.11X를 지원하는 무선 접속 단말기 등을 의미한다. 네트워크 장치는 해당 시스템과 외부 자원을 연결하는 통로이므로 외부 침입이나 악성 코드 행위 분석을 할 때에 반드시 조사해야 하는 정보이다.
해당 시스템에 연결된 모든 네트워크 장치에 할당된 IP 정보, MAC 주소, 하드웨어 ID 등을 수집하여 어떤 주소로 통신했는지 파악할 필요가 있다.
2) 네트워크 테이블
네트워크에 접속하기 위해서는 주변에 있는 네트워크 장치 정보를 가지고 있어야 하는데 이를 관리하는 정보를 네트워크 테이블이라 하며, 라우팅 테이블과 ARP(Address Resolution Protocol) 테이블이 있다.
라우팅 테이블은 특정 패킷이 네트워크를 통해서 다른 시스템으로 전송될 때 사용하기 위한 경로 정보를 기록한 것이다. 라우팅 테이블이 IP 정보를 저장하는 반면, ARP 테이블은 주변의 시스템에 장착된 네트워크 장치에 부여된 Media Access Control 주소를 저장하고 있다.
많이 알려진 ARP 스푸핑(Spoofing) 공격은 대상 시스템의 ARP 테이블을 변조하여 게이트웨이의 MAC 주소와 공격자의 MAC 주소를 동일하게 설정함으로써 시작된다. 그러면, 대상 시스템에서 전송되는 모든 패킷은 공격자의 시스템으로 전송되며, 공격자는 대상 시스템의 모든 패킷을 모니터링할 수 있게 된다. 따라서 해당 시스템의 네트워크 테이블을 조사하여 비인가된 주소를 가지고 있는 항목이 없는지를 확인해야 한다. 특히 특정 MAC 주소가 서로 다른 IP에서 나타날 경우, ARP Spoofing을 의심할 수 있다.
아래의 명령어는 ARP 테이블을 확인할 수 있는 명령어 이다.
CMD > arp -a |
3) TCP/UDP 연결 상태 정보
프로세스가 외부와 통신하기 위해서는 네트워크 포트를 할당해야 한다. 악성코드 역시 동일하게 외부와 통신하기 떄문에 침해 사고를 조사할 때는 현재 네트어크 연결 상태를 확인하고 사용 정보를 바탕으로 인가되지 않은 접속을 판별해야 한다.
분석 방법은 현재 시스템에 외부와 연결된 포트를 확인하고, 해당 포트를 사용하는 프로세스를 판별하는 것이다.
TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)를 모두 조사해야 하며, UDP는 비연결 지향성 프로토콜이기 떄문에 연결된 외부 IP 정보는 따로 존재하지 않지만 TCP는 특정 프로세스와 연결된 외부 IP 주소를 확인할 수 있다. 특히 연결 상태가 ESTABLISHED 인 것은 현재 연결되어 데이터 송수신이 일어나고 있다는 의미이므로 해당 IP가 인가된 것인지 확인해봐야 한다. PID(Process IDentifier)는 해당 연결을 사용하고 있는 프로세스의 아이ㅣ를 나타내는데, 비인가 접속을 확인할 때 이용할 수 있는 중요한 단서이다. 사용자가 인가하지 않은 프로세스가 해당 포트를 열고 외부와 통신을 하고 있을 경우, 시스템이 침해당하고 있을 가능성이 높다.
4) 공유 자원 정보
윈도우는 SMB(Server Message Block) 프로토콜을 사용하여 동일 도메인 내에 있는 시스템 사이의 자원을 공유할 수 있다. SMB는 CIFS(Common Internet File System)으로도 알려져 있다. SMB는 OSI 7 계층 중 애플리케이션 레벨에서 동작하는 프로토콜로 파일, 프린터와 같은 다양한 자원을 공유할 수 있게 해준다. 윈도우에서는 NET 명령어를 통해서 공유 자원의 정보를 알아낼 수 있다.
SMB 프로토콜은 취약점이 많이 있는데, 몇몇 악성 코드의 경우 이 SMB 프로토콜에 있는 취약점을 이용하여 원격에서 코드를 실행할 수 있다. 따라서 사용자가 설정하지 않은 공유 정보를 파악하여 시스템의 침해 여부를 파악할 필요가 있다. NET SHARE는 현재 시스템에서 열린 공유 자원의 정보를 나타낸다. NET SESSION은 원격으로 시스템에 접근하여 사용되고 있는 자원을 나타낸다. 또한 NET FILE은 어떤 파일이 원격으로 사용되고 있는지를 나타내며 그 파일의 전체 경로 및 원격으로 접속한 사용자의 ID를 출력한다.
참고 : 디지털 포렌식 개론(이상진 저)
'Digital Forensic > Windows Forensic' 카테고리의 다른 글
윈도우 시스템 조사 - 윈도우 레지스트리 (0) | 2017.06.21 |
---|