제12회 it4u 강연회 - 악성코드 분석 잘하고 싶어요
TRANSCRIPT
![Page 1: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/1.jpg)
악성코드 분석 잘하고 싶어요부제 : 엄마 저는 어떻게 하면 될까요?
![Page 2: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/2.jpg)
김남준
➤ 세종대학교 정보보호학과
➤ UpRoot System Developer
➤ KITRI Best of the Best 3기
➤ Interested in 악성코드 자동화 분석, 유사도 평가, 분산처리
➤ 2014, 2015 CODEGATE, Inc0gnito Speaker
![Page 3: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/3.jpg)
IN THIS SESSION
➤ 악성코드 분석 진짜 잘하는법 (저도 못함)
➤ 악성코드 분석할려면 뭘 공부해야 되는가?
➤ 요즘 악성코드 분석하는법?
➤ 실전 분석! with Case Study
![Page 4: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/4.jpg)
말하기 전에..
![Page 5: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/5.jpg)
“악성코드 분석은 과정만 알면
아기도 충분히 할 수 있습니다
- bunseokbot@UpRoot
![Page 6: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/6.jpg)
이게 뭔소리여
![Page 7: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/7.jpg)
분석 [ ANALYSIS ]
➤ 얽혀 있거나 복잡한 것을 풀어서개별적인 요소나 성분으로 나눔
![Page 8: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/8.jpg)
악성코드 분석
➤ 악성코드 [Malicious Code]악의적인 행위를 하기 위해 의도적으로 제작된 모든 프로그램 및 그 구성 요소
➤ Conclusion악의적인 행위를 하는 프로그램에얽혀 있는 것들을 개별적인 요소로 분리하는 것
![Page 9: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/9.jpg)
그럼 이 악성코드 분석을 왜 할까?
AV Engine 개발 악성코드 패턴 분석 침해사고 대응
다양한 곳에 이용됨
![Page 10: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/10.jpg)
과거 (엄청 옛날..?)
![Page 11: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/11.jpg)
No Obfuscation
No polymorphic
No VM Detect
![Page 12: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/12.jpg)
근데 요즘에는?
![Page 13: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/13.jpg)
그러면서 생긴 문제
Self Protection
Organization
![Page 14: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/14.jpg)
여러분들은 실제 분석하면서 이런 어려움을 만날겁니다
➤ Code Obfuscation & Virtualization
➤ Customized Packer
➤ VM (Analysis Environment) Detection
➤ Network Packet Sniffer Detection
➤ Host Machine Infection
➤ hard to find OEP (Original Program Entrypoint)
➤ Customized coded function
➤ not official Windows API
➤ etc..?
![Page 15: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/15.jpg)
또!
![Page 16: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/16.jpg)
붕괴된 내 멘탈
![Page 17: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/17.jpg)
전체적인 프로세스
사건 대응사건 분석사건 발생
위 내용은 기관이나 사람에 따라 달라질 수 있습니다.
➤무슨 문제가 생겨서 사건 발생 ex. 인터넷이 느려짐, 정보 유출, 데이터 삭제, 외부의 알림(?)
➤문제로 인한 피해 발생 ex. 컴퓨터를 사용하지 못함, 회사는 일을 못함
➤의뢰자는 빨리 해결되기 바람
![Page 18: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/18.jpg)
전체적인 프로세스
사건 대응 사건 분석사건 발생
위 내용은 기관이나 사람에 따라 달라질 수 있습니다.
➤어떻게 감염되었는가 감염 경로를 통해 악성코드의 유형을 파악할 수 있습니다.
➤감염시키고 나서 발생한 피해 ex. 문서 데이터가 전부 삭제, 공인인증서 유출, 로그인 시도 등(?)
➤어디와 통신하였는가, 이전에 유사한 경우는 없는가 악성코드 제작자는 비슷한 경우가 더러 있습니다. 이러한 그룹을 생성해놓으면 분석에 용이!
![Page 19: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/19.jpg)
전체적인 프로세스
사건 대응사건 분석사건 발생
위 내용은 기관이나 사람에 따라 달라질 수 있습니다.
➤어떻게 하면 치료 할 수 있는가? 악성코드를 제거할려면 일단 분석한 내용을 가지고 Taint된 부분을 원상태로 복구
➤피해 복구 방법 논의 랜섬웨어의 경우에는 VSS 영역이나 기타 백업 데이터 활용
![Page 20: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/20.jpg)
분석 방법론
Dynamic Analysis
동적 분석
Static Analysis
정적 분석
![Page 21: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/21.jpg)
분석 방법론
Static Analysis (정적 분석)
➤ 악성코드의 내부를 살펴보기 위해 사용하는 분석 방법
➤ 대략적인 행위를 파악하기 위해 사용하는 분석 방법이며 구조를 파악하는데 용이함
➤ 장점 : 악성코드를 직접 실행하지 않아도 행위를 대략적으로 알아낼 수 있다.
➤ 단점 : 난독화가 되어있는 경우 분석하기 어려워짐. :(
![Page 22: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/22.jpg)
분석 방법론
Dynamic Analysis (동적 분석)
➤ 악성코드를 실제 환경이나 가상 환경에서 실행시켜 그 행위를 관찰하는 분석 방법
➤ 장점 : 정적 분석에서 알아내기 어려운 부분에 대해서 분석함
➤ 단점 : 환경구축하기 어려우며 Host가 감염될 가능성이 높다
![Page 23: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/23.jpg)
IN MY CASE?
정적 분석 개시
분석한 내용을 가지고
동적 분석 with API Hooking
다시 내용을 가지고
![Page 24: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/24.jpg)
OPEN SOURCE!
![Page 25: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/25.jpg)
CASE STUDY #1
➤ 뭔지 모름!
➤ Drive By Download 방식
➤ 동작 OS : Windows
➤ Packer : Yes (EXE & Some..?)
➤ 최초발견일 : 20151128(어제!)
![Page 26: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/26.jpg)
FIRST LOOK?
in PEView
![Page 27: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/27.jpg)
PE STRUCTURE
![Page 28: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/28.jpg)
PE STRUCTURE
➤ 실행 가능한 (Portable Executable) File Format
➤ EXE, SCR, DLL, OCX, SYS, OBJ 모두 이 File Format!
➤ OBJ 파일은 사실 실행은 안되지만 PE Specification 에 있습니다.
➤ 여기서는 이 부분에 대해서 자세히 설명은 하지 않도록 하겠습니다.
![Page 29: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/29.jpg)
WATCH IAT
➤ Import Address Table
➤ 프로그램이 어떤 Library에서 어떠한 function을 call 하는지 기술
➤ Implicit Linking에 대한 정보만 제공해준다.-> 프로그램이 처음 실행될때 같이 로딩되어 종료될때 free되는 방식
![Page 30: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/30.jpg)
WATCH IAT
![Page 31: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/31.jpg)
이 악성코드가 사용하는 FUNCTION은?
➤ RegFlushKey - 레지스트리 키 변경한 것을 레지스트리에 입력
➤ modf - 나눗셈 함수
➤ PathFileExistA - 파일 존재 유무를 확인한다.
![Page 32: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/32.jpg)
FUNCTION SEARCH?
➤ 실제 함수는 엄청 많지만 외우기 어렵다 ㅠㅠ
➤ 그럴땐 바로 마소갓 MSDN을 참고하면 된다.
➤ 한글화도 그럭저럭 잘 되어있어 참고하기 좋다.
![Page 33: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/33.jpg)
EXEINFO
➤ Packer를 사용하였다!
➤ 이래서 제대로 분석되지 않았다.
➤ Packer 의 이름은 UPX
➤ 언패커가 있음! -> Failure :(
![Page 34: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/34.jpg)
스냅샷 생성 필수
![Page 35: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/35.jpg)
흠..? 좀 더 자세히 볼까
➤ 정적 단계에서 Flow 분석하기
➤ Interactive Disassembler (IDA) -> 엄청 비쌈
➤ Immunity Debugger 로 가능함! -> 무료
![Page 36: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/36.jpg)
에라이 모르겠다 실행이나 해보자!
![Page 37: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/37.jpg)
실행 전 주의사항
➤ 악성코드가 VMEscape하는 악성코드는 아닌가
➤ 악성코드가 VM을 탐지하지는 않았는가
➤ 설정상에서 완전하게 Host PC와 분리하였는가
➤ 분석을 위한 도구를 설치하였는가
![Page 38: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/38.jpg)
API MONITOR
![Page 39: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/39.jpg)
API MONITOR
![Page 40: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/40.jpg)
API MONITOR
![Page 41: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/41.jpg)
API MONITOR
➤ 아 이 악성코드는 GetFileAttributes 함수를 통해 파일 확인 후에 파일을 생성하고, Registry를 조작하는 기능을 가지고 있다.
![Page 42: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/42.jpg)
이 정보들을 통해서 알아낼 수 있는 것
➤ 이 악성코드가 실제 사용하는 함수 -> 악성코드 행위
➤ 감염 경로 -> 악성코드 제작자의 목적
➤ 악성코드 C&C Server or Phishing Site -> 악성 행위 추측
➤ 실제 동적 분석 -> 악성코드 행위 실제 확인 가능
![Page 43: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/43.jpg)
생각의 조합?
![Page 44: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/44.jpg)
MY OWN ANALYZER
➤ 이러한 행위들을 자동화 해보고싶다면?
➤ 나만의 분석기를 만들어보자!
➤ using Python PEFILE!
![Page 45: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/45.jpg)
PEFILE MODULE
➤ PE File Parser for Python Language
➤ support multi-platform (Windows, Mac OS X, Linux..)
➤ virustotal, Immunity Debugger, ExeDumpUtility (Web) use this
➤ sudo pip install pefile
![Page 46: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/46.jpg)
BASIC
➤ 파일을 로딩할려면 PE class 를 사용해야 합니다!
➤ 일단 pefile 모듈이 해당 exe 파일에 대한 정보를 파싱하는 작업
import pefile
p = pefile.PE(’s.exe’)
![Page 47: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/47.jpg)
PE SECTIONS
➤ 일단 각 Section에 대해서 가져옵니다.
➤ PEView와 같은 느낌을 줄 수 있습니다. ㅎㅎ
import pefile
p = pefile.PE(’s.exe’)
sections = []
for section in p.sections:
sections.append([section.Name, hex(section.VirtualAddress)
, hex(section.Misc_VirtualSize), section.SizeOfRawData])
![Page 48: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/48.jpg)
PACKING DETECTION
➤ pefile 모듈에서는 패킹 탐지도 해준다!
➤ 방식은 엔트로피! -> 무질서함의 정도를 기반으로 탐지!
![Page 49: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/49.jpg)
PACKING DETECTION
from pefile import *
p = PE(’s.exe’)
entro_info = []
for section in p.sections:
entro_info.append([section.Name, section.get_entropy()])
![Page 50: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/50.jpg)
GET IMPORT INFORMATION
➤ 아까 PEView에서 볼 수 있었던 Import 정보를 가져올 수 있다.
➤ 이를 통해서 EXE 에서 사용하는 함수의 정보를 가져옴!
➤ 물론 명시적에 대해서만.. 이지만 그래도!
➤ 저는 MSDN API를 하나 만들어서 개인적으로 사용중입니다!
![Page 51: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/51.jpg)
GET IMPORT INFORMATION
from pefile import *
p = PE(’s.exe’)
entry_info = []
for e in p.DIRECTORY_ENTRY_IMPORT:
tmp = {‘dllname’ : e.dll, ‘func_list’ : []}
for import_ in e.imports:
tmp[‘func_list’].append(import_.name)
entry_info.append(tmp)
![Page 52: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/52.jpg)
GET IMPORT INFORMATION
![Page 53: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/53.jpg)
CONCLUSION
➤ 악성코드 분석은 전체 과정중에 하나입니다.
➤ 전체 사건의 퍼즐에 하나의 Piece에 불과합니다.
➤ 주위에 여러 부분들을 같이 고려하면서 분석하면 쉬워집니다.
➤ 그래도 일단 Assembly부터..?!
➤ 그리고 공격자가 주는 힌트를 너무 믿지 마세요 (Fake)
➤ 요즘에는 자동화 분석 보조도구들이 많이 나와있어서 공부하기 좋아요
➤ 처음에는 분석 보조도구 좀 보다가 자기만의 도구를 만드는것도.. ㅎ
![Page 54: 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요](https://reader030.vdocuments.site/reader030/viewer/2022020108/58ed3dba1a28ab24588b459d/html5/thumbnails/54.jpg)
감사합니다