악성코드를 분석하는 방법
1. 초기분석 (기초 정적 분석)
- 실행하지 않고 분석
-직관적이며 신속히 수행
2. 동적분석
- 프로그램을 실행하고 분석
3. 정적분석
- 리버스 엔지니어링
1. 초기분석(초기 정적분석)
악성코드를 실행하지 않고 분석하는 방법
📌 분석 방법
1. 안티 바이러스 스캔 이용
✔ 사용 도구 : virustotal[.]com, malwares[.]com 사이트
1) 바이러스 토탈 Virus Total (www.virustotal.com)
이곳에서는 다양한 안티바이러스 엔진을 사용해서 파일을 분석해 준다.
여러 개의 안티바이러스 엔진으로 스캐닝 가능. 또한 악성코드에 대한 추가 정보 제공
바이러스 걸린 파일을 업로드하면 아래처럼 전 세계의 안티 바이러스 엔진이 바이러스 여부를 알려준다,.
2) 말웨어즈 (malwares.com)
악성코드 해시값, URL, IP 등으로 검색가능
바이러스 토탈과 비슷한 역할을 한다.
2. 해시값 확인
✔ 사용 도구 : HashTab
파일의 해시값을 확일할 수 있는 도구
파일마다 고유의 해시값을 가지고 있기 때문에 동일한 파일은 해시값이 같지만, 악성코드에 감염되어서 파일이 일부 수정되었으면 다른 해시값을 가지기 때문에 악성코드에 감염되었다고 분석할 수 있다.
HashTab이 컴퓨터에 설치되어 있으면 파일 오른쪽 클릭 후 [속성]에 [파일 해시]라는 탭이 생기고 해시값을 확인할 수 있다.
3. 문자열 확인
✔ 사용 도구: String, bintext
👉 수상한 프로그램 함수 또는 문자열을 확인 가능
4. 패킹, 프로텍트 여부 확인
👉 패킹 : 실행파일을 압축하는 것. 실행파일 크기를 줄이거나 디버깅을 방지하기 위해 난독화를 목적으로 사용됨. 실행 파일을 압축하되 exe파일로 저장한다.
👉 프로텍트 : 여러 기술을 써서 분석을 어렵게 만드는 것. 예를 들어, 디버깅을 쓰게되면, 컴퓨터가 꺼지는 기능
✔ 사용 도구 : PEID, Exeinfo PE, UPX
[ 패킹 하는 방법/ 확인 방법 ]
1) Exeinfope에 파일 넣기
2) UPX로 압축
명령어) upx -o UPX_notepade.exe notepad.exe
- 패킹을 하면 용량이 줄어들고, 문자열 또는 함수가 검색되지 않음.
👉 파일 크기가 달라짐.
👉 제대로된 함수 확인 불가
3) PEiD로 패킹, 언패킹 여부 확인 가능
5. PE 구조 확인
👉 PE(Portable Executable) 포맷 : 윈도우 실행파일의 규격이 규격만 지키면 어느 윈도우에서나 파일을 실행할 수 있다. 표준안 (1993년) MS에서 제정. 메모리에서도 디스크에 저장된 파일 형태로 바로 실행할 수도 있도록 설게 win32의 기본실행파일 형태(64비트는 PE플러스로 다른 구격)
✔ 사용 도구 : Pe_ppee, hxd, exeinfope, PEview으로 PE 정보 확인 가능
[ PE 파일의 종류 ]
실행 파일 : .exe, .scr
시스템 파일 : .sys , .vxd
라이브러리 파일: .dll, .ocx, .cpl, .drv
PE : PE헤더와 PE바디로 구성
대부분이 4D 5A : MZ로 시작함
모든 이런 윈도우의 PE구조는 동일함.
2. 동적 분석
악성코드를 분석환경에서 실행시켜서, 실행 이후의 시스템의 변화를 분석하는 단계
즉, 바이러스가 어떻게 동작하는지 분석하는 단계입
📌 종류
프로세스, 파일시스템, 레디스트리, 네트워크 조작 행위에 대한 분석 방법
📌 방법
0. 기초 동적 분석
✔ 사용 도구: 조 샌드박스, File-analyzer.net, Sandboxie
1) 조 샌드박스 (Joe Sandbox)
자동화 분석 툴로 악성코드를 업로드하면 자동으로 가상의 환경에서 실행을 해서 해당 악성코드가 어떤 기능을 악성지표는 무엇인지 등을 보고서 형식으로 작성해 준다.
일부 바이러스의 경우 가상 환경에서 실행이 안 되는 경우가 있어서 제대로 분석이 안 되는 경우도 있다.
2) 직접 실행
- exe파일을 직접 실행
- dll파일은 rundll32.exe
(예) rundll32.exe 악성 dll파일 dll안에 들어있는 함수
1. 프로세스 분석
프로세스의 변화를 실시간으로 확인하는 방법입니다.
✔ 사용 도구: Process Explorer로 정상 프로세스 확인, Process Monitor
- 악성코드가 동작하려면 프로세스의 형태로 동작될 것이기 때문에 새로운 프로세스가 생김.
- 따라서, 실시간으로 프로세스의 변화를 확인하고 있으면 악성코드가 어떠한 프로세스를 생성했는지 확인할 수 있음.
Process Explorer : 작업관리자와 비슷. pid 번호와 하위 프로세스를 확인할 수 있다.
Process Monitor : 프로세스가 실행됐을 때 모든 로그가 기록됨.
그래서 Process Explorer에서 잠시 생성되었다가 사라지는 프로세스를 자세히 확일 할 수도 있음. 그러나 모든 로그가 나오기 때문에 불필요한 정보가 많아 필터 사용이 필요
2. 파일시스템 분석
파일시스템의 변화를 실시간으로 확인하는 방법
- 현재 동작하고 있는 파일들의 상태를 감시하면, 악성코드가 새로운 파일을 생성하거나, 기존의 파일을 수정, 삭제하는 등의 동작을 확인할 수 있음.
3. 레지스트리 분석
레지스트리의 변화를 실시간으로 확인하는 방법
✔ 사용 도구: Autoruns
- 특정 악성코드는 시스템의 레지스트리를 조작하여 자신이 원하는 정보를 입력하거나, 중요한 레지스트리를 삭제하여 시스템에 악영향을 미칠 수 있습니다. 따라서, 레지스트리의 변화 또한 실시간으로 감지하여 악성코드가 어떤 동작을 하는지 확인할 수 있다.
[ Autoruns 사용 방법 ]
- 윈도우 자동시작하는 프로그램을 알려줌.
- 운영체제에서 어떤 드라이버, 파일들, 서비스들이 재시작하는지 알 수 있다.
* 일부 악성코드의 특징이 재부팅 시 재시작하므로, autoruns 도구를 통해 잡을 수 있다.
4. 네트워크 분석
네트워크의 변화를 실시간으로 확인하는 방법
✔ 사용 도구: Wireshark, TCPView
- 희생자 PC에 악성코드가 침투 후 공격자에게 수집한 정보를 네트워크를 통해서 보내거나 외부로부터 네트워크를 통해 명령을 받아 그 명령에 맞게 동작하기 때문에 네트워크의 변화를 실시간으로 감지하며 악성코드가 어떤 동작을 하는지 확인 가능.
5. 디버깅 도구를 이용해서
디버거를 이용 동작하는 악성 실행 파일의 내부 상태를 점검
✔ 사용 도구: OLLY DBG, x64dbg, immunity debugger, WINDBG 등
파일이 어떻게 동작하는지 디버깅을 통해 확인 가능
3. 정적분석
정적분석은 악성코드 파일을 디스어셈블하여 아주 세부적인 동작을 분석하는 단계
- 정적분석을 하는 방법은 실행파일 만을 가지고 프로그램의 구조를 역분석하는 리버스 엔지니어링이라는 기술을 활용할 수 있습니다.
1. 실행파일을 디스어셈블리하여 악성코드 내부를 역공학
✔ 사용 도구: IDA PRO 등