본문 바로가기

일상/나만의노트

악성코드 동적분석 도구

1. API 확인


  1) MSDN

   - 모르는 API가 나온다면? 구글에 다음과 같이 검색

   - site:msdn.microsoft.com [API]



2. 웹 디버깅툴


  1) 크롬 자바스크립트 디버깅

   - 설정 -> 도구 -> 개발자도구



3. 실행중인 프로세스 분석


  1) AutoRuns :이 프로그램을 실행하면 신규 자동실행 프로세스를 확인가능

   - 그냥 실행후 현재목록 save

   - 악성코드 실행

   - 옵션 : diff로 저장한 것돠 비교(등록된 위치, 파일)


  2) DebugView : 프로세스의 API 호출을 볼 수 있음


  3) ListDLLs : 사용중인 DLL 목록 (주소, 크기) - GREP, AWK랑 같이 사용


  4) Handle : 프로세스는 파일, 레지스트리, 스레드를 건드리려면 핸들이필요한데 그러한 핸들을 보여준다.


  5) Process Explorer : 

   - 레지스트리 핸들 정보, 스레드 정보, 가지고 있는 문자열 추출

   - suspend, restart 기능이 매우 유용

   - 다 보지말고 내게 필요한 칼럼만 설정(Version, Image, Path, Cmd Line)

   - 더블클릭 또는 속성에서 프로세스의 문자열을 뽑아줌 (URL 확인!)

   - 프로세스 아래에 DLL, 뮤택스 핸들 목록 보여줌


  6) Process Monitor : 

   - 프로세스가 사용중인 API 목록을 모니터링

   - 너무 많이 올라오면 느려지므로 필터를 걸어라

     ex) Name is _____

          Path contains  _____ (save.exe?), (레지스트리)

          Operation contaisn  _____ (write), (setValue)

   - 버퍼가 많이 쌓이니 5분정도만!

   - 하이라이트기능을 넣어 확인!


  7) TCPView : 네트워크 연결 정보, 새로 생긴 네트워크 색깔로 보여줌

 


4. 숨겨진 프로세스 확인 및 추출


  1) VMMap : 쓰레드 형태로 메모리에 숨겨져 있는 악성코드를 추출하기 위해

   - 최근 악성코드는 가상메모리를 할당하고 그 곳 내에 PE파일을 삽입한다. 이후 쓰레드를 통해 삽입된 PE를 실행시키는데 이는 보통 Private Heap 영역 중 Read/Execute/Write가 모두 권한이 있는 영역에 숨겨진다. 확인 방법은 컨트롤 T를 통해 문자열을 확인하고 처음 PE파일이 갖는 문자열을 확인하면 이는 숨겨진 악성코드이다.



 프로세스는 4기가이다. 2기가는 커널, 2기가는 유저용이다.

 요즘은 메모리에만 존재하는 악성코드가 유행인데, 실행방법은 다음과 같다.


 자동실행 -> 메모리공간할당 -> 그 메모리에 악성코드 삽입 -> 스레드 동작


 따라서 메모리에서 악성코드를 찾아야하는데 VMMap으로 프로세스의 메모리 구조를 확인하면 노란색으로 보이는 부분이 있다.  (실행 -> 프로세스 선택 -> Private 영역 또는 노란색 영역 선택)


 이 부분을 주의깊게 봐야하는데 여기서 이 메모리에 대한 접근권한이 Execute/Read/Write 이면 꼭 이메모리의 스트링을 확인하자.


 그리고 악성코드가 주료 사용하는 함수도 확인하자. 


 예를들어 암호화할 확장자 목록, 파일명, HTML문구가 있다.

 



  2) Process Hacker : 숨겨진 프로세스 목록을 보여준다. 


  3) Kernel Detective : 메모리 상에있는 숨겨진 어셈블코드를 보여준다

   - Thread를 보여주고 해당 코드의 시작 위치를 확인할 수 있다.(어셈블코드로...)


  4) WireShark : 잘 알려진 패킷분석 도구. 악성코드가 악성파일을 주고 받을 때 이를 추출하는 기능을 제공

   - File -> Export -> Object에서 파일을 추출할 수 있다.

   - Statistics -> HTTP -> Packet Counter, Request, Load distribute 로 통계적인 접근을 할 수 있다.

 


5. 스냅샷


  1) InCtrl5 : 프로세스 실행 후 파일, 폴더 레지스트리 변경 정보를 알 수 있다.


  2) SysAnalyzer : 스냅샨 전 후 사이의 값을 지정해 HTTP 및 IRC 접속을 확인한 후 DLL 에서 호출되는 API목록을 제공, 모니터링 시점에 생성되는 파일 확인


  3) SysTracker : 실행 중인 프로세스들의 (파일, 레지스트리, 네트워크) 모니터링. 



6. 뷰어


  1) Lord PE : 프로세스가 가지고 있는 DLL 정보 확인 가능. 메모리 추출기능 제공

   - VMMap에서 확인한 Private Heap에 숨겨진 메모리 추출시 사용

   - 프로세스 선택 -> 우클릭 -> Rigion

   - 비슷한 툴로 PeTools가 있다.


  2) BinText

   - 프로그램의 텍스트를 보여줌

   - 파일 뿐만 아니라 메모리에서 검색 가능


  3) PEid : 

   - 실행 압축 정보를 보여줌

   - 옵션에 Use External Signature 를 사용하면 같은 폴더 내에 사용자 디비 텍스트 파일이 있다. 이러한 시그니처를 통해 압축 정보를 확인한다.

   - 각 섹션의 디어셈블 기능

   - Entry Porint에 대한 디어셈블


  4) peview : 

   - PE파일을 파싱해 그 값들을 보여준다.

   - File, RVA, VA 오프셋을 확인할 수 있다.


  5) CFF Explorer : PE파일의 구조를 Tree 형태로 보여줌


  6) Resource Hacker : 

   - 파일이 가지고 있는 리소스정보를 보여줌

   - 악성프로그램은 정상적인 실행화면이 없다

   - 애드웨어는 프로그램에 숨겨져 새롭게 배포됨

   - 하지만 그 모습은 그대로이므로 리소스를 통해 애드웨어를 확인할 수 있다.


  7) 010 

   - 헥사 뷰어 기능 외에 헥사 분석 기능 지원

   - Ex) XOR, Rotate


  8) HexCmp : 두 파일의 헥사값 비교


  9) frhed : 무료 헥사뷰어


  10) GMER 

   - 숨겨진 프로세스, 스레드, 서비스, 레지스트리, 드라이버, 파일을 분석해 루트킷 스캔

   - SSDT, IDT, IRP 후킹하는 프로세스 스캔

   - 파일 기능, 라이브러리, 드라이버 로딩, 프로세스 생성, 레지스트리 엔트리, TCP/I 모니터링

   

  11) VB Decompiler : 비주얼 베이직 디어셈블


  12) .NET Reflector : .NET 디어셈블



7. 기타


  1) 이뮤니티 디버그 : 올리디버그랑 같은 회사이지만 파이썬 플러그인을 지원한다


  2) HideTools : 프로세스를 숨길 수 있다.


  

'일상 > 나만의노트' 카테고리의 다른 글

git 기본 명령어 그림 한장으로 요약  (0) 2020.02.25
인케이스로 케이스 분석하기  (0) 2016.04.26