SlideShare a Scribd company logo
1 of 54
Download to read offline
악성코드 분석 잘하고 싶어요
부제 : 엄마 저는 어떻게 하면 될까요?
김남준
➤ 세종대학교 정보보호학과
➤ UpRoot System Developer
➤ KITRI Best of the Best 3기
➤ Interested in 악성코드 자동화 분석, 유사도 평가, 분산처리
➤ 2014, 2015 CODEGATE, Inc0gnito Speaker
IN THIS SESSION
➤ 악성코드 분석 진짜 잘하는법 (저도 못함)
➤ 악성코드 분석할려면 뭘 공부해야 되는가?
➤ 요즘 악성코드 분석하는법?
➤ 실전 분석! with Case Study
말하기 전에..
“악성코드 분석은 과정만 알면
아기도 충분히 할 수 있습니다
- bunseokbot@UpRoot
이게 뭔소리여
분석 [ ANALYSIS ]
➤ 얽혀 있거나 복잡한 것을 풀어서

개별적인 요소나 성분으로 나눔
악성코드 분석
➤ 악성코드 [Malicious Code]

악의적인 행위를 하기 위해 

의도적으로 제작된 모든 프로그램
및 그 구성 요소
➤ Conclusion

악의적인 행위를 하는 프로그램에

얽혀 있는 것들을 개별적인 요소로
분리하는 것

그럼 이 악성코드 분석을 왜 할까?
AV Engine 개발 악성코드 패턴 분석 침해사고 대응
다양한 곳에 이용됨
과거 (엄청 옛날..?)
No Obfuscation
No polymorphic
No VM Detect
근데 요즘에는?
그러면서 생긴 문제
Self Protection
Organization
여러분들은 실제 분석하면서 이런 어려움을 만날겁니다
➤ 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..?
또!
붕괴된 내 멘탈
전체적인 프로세스
사건 대응사건 분석사건 발생
위 내용은 기관이나 사람에 따라 달라질 수 있습니다.
➤ 무슨 문제가 생겨서 사건 발생

ex. 인터넷이 느려짐, 정보 유출, 데이터 삭제, 외부의 알림(?)
➤ 문제로 인한 피해 발생

ex. 컴퓨터를 사용하지 못함, 회사는 일을 못함
➤ 의뢰자는 빨리 해결되기 바람
전체적인 프로세스
사건 대응사건 분석사건 발생
위 내용은 기관이나 사람에 따라 달라질 수 있습니다.
➤ 어떻게 감염되었는가

감염 경로를 통해 악성코드의 유형을 파악할 수 있습니다.
➤ 감염시키고 나서 발생한 피해

ex. 문서 데이터가 전부 삭제, 공인인증서 유출, 로그인 시도 등(?)
➤ 어디와 통신하였는가, 이전에 유사한 경우는 없는가

악성코드 제작자는 비슷한 경우가 더러 있습니다. 이러한 그룹을 생성해놓으면 분석에 용이!
전체적인 프로세스
사건 대응사건 분석사건 발생
위 내용은 기관이나 사람에 따라 달라질 수 있습니다.
➤ 어떻게 하면 치료 할 수 있는가?

악성코드를 제거할려면 일단 분석한 내용을 가지고 Taint된 부분을 원상태로 복구
➤ 피해 복구 방법 논의

랜섬웨어의 경우에는 VSS 영역이나 기타 백업 데이터 활용
분석 방법론
Dynamic Analysis
동적 분석
Static Analysis
정적 분석
분석 방법론
Static Analysis (정적 분석)
➤ 악성코드의 내부를 살펴보기 

위해 사용하는 분석 방법
➤ 대략적인 행위를 파악하기 위해
사용하는 분석 방법이며 구조를
파악하는데 용이함
➤ 장점 : 악성코드를 직접 실행하
지 않아도 행위를 대략적으로 

알아낼 수 있다.
➤ 단점 : 난독화가 되어있는 경우
분석하기 어려워짐. :(
분석 방법론
Dynamic Analysis (동적 분석)
➤ 악성코드를 실제 환경이나 

가상 환경에서 실행시켜 그 행
위를 관찰하는 분석 방법
➤ 장점 : 정적 분석에서 알아내기
어려운 부분에 대해서 분석함
➤ 단점 : 환경구축하기 어려우며
Host가 감염될 가능성이 높다
IN MY CASE?
정적 분석 개시
분석한 내용을 가지고
동적 분석 with API Hooking
다시 내용을 가지고
OPEN SOURCE!
CASE STUDY #1
➤ 뭔지 모름!
➤ Drive By Download 방식
➤ 동작 OS : Windows
➤ Packer : Yes (EXE & Some..?)
➤ 최초발견일 : 20151128(어제!)
FIRST LOOK?
in PEView
PE STRUCTURE
PE STRUCTURE
➤ 실행 가능한 (Portable Executable) File Format
➤ EXE, SCR, DLL, OCX, SYS, OBJ 모두 이 File Format!
➤ OBJ 파일은 사실 실행은 안되지만 PE Specification 에 있습니다.
➤ 여기서는 이 부분에 대해서 자세히 설명은 하지 않도록 하겠습니다.
WATCH IAT
➤ Import Address Table
➤ 프로그램이 어떤 Library에서 어떠한 function을 call 하는지 기술
➤ Implicit Linking에 대한 정보만 제공해준다.

-> 프로그램이 처음 실행될때 같이 로딩되어 종료될때 free되는 방식
WATCH IAT
이 악성코드가 사용하는 FUNCTION은?
➤ RegFlushKey - 레지스트리 키 변경한 것을 레지스트리에 입력
➤ modf - 나눗셈 함수
➤ PathFileExistA - 파일 존재 유무를 확인한다.
FUNCTION SEARCH?
➤ 실제 함수는 엄청 많지만 외우기 어렵다 ㅠㅠ
➤ 그럴땐 바로 마소갓 MSDN을 참고하면 된다.
➤ 한글화도 그럭저럭 잘 되어있어 참고하기 좋다.
EXEINFO
➤ Packer를 사용하였다!
➤ 이래서 제대로 분석되지 않았다.
➤ Packer 의 이름은 UPX
➤ 언패커가 있음! -> Failure :(
스냅샷 생성 필수
흠..? 좀 더 자세히 볼까
➤ 정적 단계에서 Flow 분석하기
➤ Interactive Disassembler (IDA) -> 엄청 비쌈
➤ Immunity Debugger 로 가능함! -> 무료
에라이 모르겠다 실행이나 해보자!
실행 전 주의사항
➤ 악성코드가 VMEscape하는 악성코드는 아닌가
➤ 악성코드가 VM을 탐지하지는 않았는가
➤ 설정상에서 완전하게 Host PC와 분리하였는가
➤ 분석을 위한 도구를 설치하였는가
API MONITOR
API MONITOR
API MONITOR
API MONITOR
➤ 아 이 악성코드는 GetFileAttributes 함수를 통해 파일 확인 후에 파일을
생성하고, Registry를 조작하는 기능을 가지고 있다.
이 정보들을 통해서 알아낼 수 있는 것
➤ 이 악성코드가 실제 사용하는 함수 -> 악성코드 행위
➤ 감염 경로 -> 악성코드 제작자의 목적
➤ 악성코드 C&C Server or Phishing Site -> 악성 행위 추측
➤ 실제 동적 분석 -> 악성코드 행위 실제 확인 가능
생각의 조합?
MY OWN ANALYZER
➤ 이러한 행위들을 자동화 해보고싶다면?
➤ 나만의 분석기를 만들어보자!
➤ using Python PEFILE!
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
BASIC
➤ 파일을 로딩할려면 PE class 를 사용해야 합니다!
➤ 일단 pefile 모듈이 해당 exe 파일에 대한 정보를 파싱하는 작업
import pefile
p = pefile.PE(’s.exe’)
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])
PACKING DETECTION
➤ pefile 모듈에서는 패킹 탐지도 해준다!
➤ 방식은 엔트로피! -> 무질서함의 정도를 기반으로 탐지!
PACKING DETECTION
from pefile import *
p = PE(’s.exe’)
entro_info = []
for section in p.sections:
entro_info.append([section.Name, section.get_entropy()])
GET IMPORT INFORMATION
➤ 아까 PEView에서 볼 수 있었던 Import 정보를 가져올 수 있다.
➤ 이를 통해서 EXE 에서 사용하는 함수의 정보를 가져옴!
➤ 물론 명시적에 대해서만.. 이지만 그래도!
➤ 저는 MSDN API를 하나 만들어서 개인적으로 사용중입니다!
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)
GET IMPORT INFORMATION
CONCLUSION
➤ 악성코드 분석은 전체 과정중에 하나입니다.
➤ 전체 사건의 퍼즐에 하나의 Piece에 불과합니다.
➤ 주위에 여러 부분들을 같이 고려하면서 분석하면 쉬워집니다.
➤ 그래도 일단 Assembly부터..?!
➤ 그리고 공격자가 주는 힌트를 너무 믿지 마세요 (Fake)
➤ 요즘에는 자동화 분석 보조도구들이 많이 나와있어서 공부하기 좋아요
➤ 처음에는 분석 보조도구 좀 보다가 자기만의 도구를 만드는것도.. ㅎ
감사합니다

More Related Content

What's hot

Head First to Container&Kubernetes
Head First to Container&KubernetesHead First to Container&Kubernetes
Head First to Container&KubernetesHungWei Chiu
 
Getting Started with Kubernetes
Getting Started with Kubernetes Getting Started with Kubernetes
Getting Started with Kubernetes VMware Tanzu
 
Building Microservices with gRPC and NATS
Building Microservices with gRPC and NATSBuilding Microservices with gRPC and NATS
Building Microservices with gRPC and NATSShiju Varghese
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Justin Lin
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解したtorisoup
 
Helm – The package manager for Kubernetes
Helm – The package manager for KubernetesHelm – The package manager for Kubernetes
Helm – The package manager for KubernetesFabianRosenthal1
 
Opentelemetry - From frontend to backend
Opentelemetry - From frontend to backendOpentelemetry - From frontend to backend
Opentelemetry - From frontend to backendSebastian Poxhofer
 
Java Multithreading Using Executors Framework
Java Multithreading Using Executors FrameworkJava Multithreading Using Executors Framework
Java Multithreading Using Executors FrameworkArun Mehra
 
Rancher 2.x first step before deep dive
Rancher 2.x  first step before deep diveRancher 2.x  first step before deep dive
Rancher 2.x first step before deep diveLINE Corporation
 
Containerd Internals: Building a Core Container Runtime
Containerd Internals: Building a Core Container RuntimeContainerd Internals: Building a Core Container Runtime
Containerd Internals: Building a Core Container RuntimePhil Estes
 
Prometheus Celery Exporter
Prometheus Celery ExporterPrometheus Celery Exporter
Prometheus Celery ExporterFabio Todaro
 
Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4ICS
 
Kubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep DiveKubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep DiveMichal Rostecki
 
Bare Metal Cluster with Kubernetes, Istio and Metallb | Nguyen Phuong An, Ngu...
Bare Metal Cluster with Kubernetes, Istio and Metallb | Nguyen Phuong An, Ngu...Bare Metal Cluster with Kubernetes, Istio and Metallb | Nguyen Phuong An, Ngu...
Bare Metal Cluster with Kubernetes, Istio and Metallb | Nguyen Phuong An, Ngu...Vietnam Open Infrastructure User Group
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application javaAntoine Rey
 
Qt multi threads
Qt multi threadsQt multi threads
Qt multi threadsYnon Perek
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
CD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdfCD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdfKnoldus Inc.
 

What's hot (20)

Head First to Container&Kubernetes
Head First to Container&KubernetesHead First to Container&Kubernetes
Head First to Container&Kubernetes
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
 
Getting Started with Kubernetes
Getting Started with Kubernetes Getting Started with Kubernetes
Getting Started with Kubernetes
 
Building Microservices with gRPC and NATS
Building Microservices with gRPC and NATSBuilding Microservices with gRPC and NATS
Building Microservices with gRPC and NATS
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
 
Kubernetes PPT.pptx
Kubernetes PPT.pptxKubernetes PPT.pptx
Kubernetes PPT.pptx
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
Helm – The package manager for Kubernetes
Helm – The package manager for KubernetesHelm – The package manager for Kubernetes
Helm – The package manager for Kubernetes
 
Opentelemetry - From frontend to backend
Opentelemetry - From frontend to backendOpentelemetry - From frontend to backend
Opentelemetry - From frontend to backend
 
Java Multithreading Using Executors Framework
Java Multithreading Using Executors FrameworkJava Multithreading Using Executors Framework
Java Multithreading Using Executors Framework
 
Rancher 2.x first step before deep dive
Rancher 2.x  first step before deep diveRancher 2.x  first step before deep dive
Rancher 2.x first step before deep dive
 
Containerd Internals: Building a Core Container Runtime
Containerd Internals: Building a Core Container RuntimeContainerd Internals: Building a Core Container Runtime
Containerd Internals: Building a Core Container Runtime
 
Prometheus Celery Exporter
Prometheus Celery ExporterPrometheus Celery Exporter
Prometheus Celery Exporter
 
Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4
 
Kubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep DiveKubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep Dive
 
Bare Metal Cluster with Kubernetes, Istio and Metallb | Nguyen Phuong An, Ngu...
Bare Metal Cluster with Kubernetes, Istio and Metallb | Nguyen Phuong An, Ngu...Bare Metal Cluster with Kubernetes, Istio and Metallb | Nguyen Phuong An, Ngu...
Bare Metal Cluster with Kubernetes, Istio and Metallb | Nguyen Phuong An, Ngu...
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
 
Qt multi threads
Qt multi threadsQt multi threads
Qt multi threads
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
CD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdfCD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdf
 

Viewers also liked

악성코드와 분석 방법
악성코드와 분석 방법악성코드와 분석 방법
악성코드와 분석 방법Youngjun Chang
 
악성코드 개념 및 대응 기술 (사이버 게놈 기술)
악성코드 개념 및 대응 기술 (사이버 게놈 기술)악성코드 개념 및 대응 기술 (사이버 게놈 기술)
악성코드 개념 및 대응 기술 (사이버 게놈 기술)seungdols
 
악성코드 분석 도구
악성코드 분석 도구악성코드 분석 도구
악성코드 분석 도구Youngjun Chang
 
제12회 IT4U 강연회 - 화이트햇 해커들의 웹 해킹
제12회 IT4U 강연회 - 화이트햇 해커들의 웹 해킹제12회 IT4U 강연회 - 화이트햇 해커들의 웹 해킹
제12회 IT4U 강연회 - 화이트햇 해커들의 웹 해킹NAVER D2
 
KUICS 리버싱 스터디 1회차
KUICS 리버싱 스터디 1회차KUICS 리버싱 스터디 1회차
KUICS 리버싱 스터디 1회차준혁 이
 
악성코드의 역사
악성코드의 역사악성코드의 역사
악성코드의 역사Juhwan Yun
 
(Fios#03) 1. 실전 윈도 악성코드 메모리 분석
(Fios#03) 1. 실전 윈도 악성코드 메모리 분석(Fios#03) 1. 실전 윈도 악성코드 메모리 분석
(Fios#03) 1. 실전 윈도 악성코드 메모리 분석INSIGHT FORENSIC
 
DLL 인젝션
DLL 인젝션DLL 인젝션
DLL 인젝션광민 김
 
(Fios#02) 3. 빠르게 끝내는 악성코드 분석과 대응
(Fios#02) 3. 빠르게 끝내는 악성코드 분석과 대응(Fios#02) 3. 빠르게 끝내는 악성코드 분석과 대응
(Fios#02) 3. 빠르게 끝내는 악성코드 분석과 대응INSIGHT FORENSIC
 
그로스 해킹(Growth Hacking)
그로스 해킹(Growth Hacking)그로스 해킹(Growth Hacking)
그로스 해킹(Growth Hacking)Jong taek OH
 
2차원 평면상에서 가장 먼 두 점 구하기
2차원 평면상에서 가장 먼 두 점 구하기2차원 평면상에서 가장 먼 두 점 구하기
2차원 평면상에서 가장 먼 두 점 구하기광민 김
 
1.악성코드 최신 동향과 기법
1.악성코드 최신 동향과 기법1.악성코드 최신 동향과 기법
1.악성코드 최신 동향과 기법Youngjun Chang
 
(Fios#02) 7. 윈도우 10 포렌식 분석
(Fios#02) 7. 윈도우 10 포렌식 분석(Fios#02) 7. 윈도우 10 포렌식 분석
(Fios#02) 7. 윈도우 10 포렌식 분석INSIGHT FORENSIC
 
Virtualization technology for security
Virtualization technology for securityVirtualization technology for security
Virtualization technology for securityhanbeom Park
 
Power shell 악성코드 동향 20161118_차민석_디지털 포렌식 기술특강 공개판
Power shell 악성코드 동향 20161118_차민석_디지털 포렌식 기술특강 공개판Power shell 악성코드 동향 20161118_차민석_디지털 포렌식 기술특강 공개판
Power shell 악성코드 동향 20161118_차민석_디지털 포렌식 기술특강 공개판Minseok(Jacky) Cha
 
2.악성코드와 분석 방안
2.악성코드와 분석 방안2.악성코드와 분석 방안
2.악성코드와 분석 방안Youngjun Chang
 
디지털포렌식, 이것만 알자!
디지털포렌식, 이것만 알자!디지털포렌식, 이것만 알자!
디지털포렌식, 이것만 알자!SeungYong Yoon
 
Google Hacking
Google HackingGoogle Hacking
Google HackingIlsun Choi
 
시스템 보안에 대해 최종본
시스템 보안에 대해   최종본시스템 보안에 대해   최종본
시스템 보안에 대해 최종본승표 홍
 
그로스해킹 세미나 #1
그로스해킹 세미나 #1그로스해킹 세미나 #1
그로스해킹 세미나 #1Haezoom Inc.
 

Viewers also liked (20)

악성코드와 분석 방법
악성코드와 분석 방법악성코드와 분석 방법
악성코드와 분석 방법
 
악성코드 개념 및 대응 기술 (사이버 게놈 기술)
악성코드 개념 및 대응 기술 (사이버 게놈 기술)악성코드 개념 및 대응 기술 (사이버 게놈 기술)
악성코드 개념 및 대응 기술 (사이버 게놈 기술)
 
악성코드 분석 도구
악성코드 분석 도구악성코드 분석 도구
악성코드 분석 도구
 
제12회 IT4U 강연회 - 화이트햇 해커들의 웹 해킹
제12회 IT4U 강연회 - 화이트햇 해커들의 웹 해킹제12회 IT4U 강연회 - 화이트햇 해커들의 웹 해킹
제12회 IT4U 강연회 - 화이트햇 해커들의 웹 해킹
 
KUICS 리버싱 스터디 1회차
KUICS 리버싱 스터디 1회차KUICS 리버싱 스터디 1회차
KUICS 리버싱 스터디 1회차
 
악성코드의 역사
악성코드의 역사악성코드의 역사
악성코드의 역사
 
(Fios#03) 1. 실전 윈도 악성코드 메모리 분석
(Fios#03) 1. 실전 윈도 악성코드 메모리 분석(Fios#03) 1. 실전 윈도 악성코드 메모리 분석
(Fios#03) 1. 실전 윈도 악성코드 메모리 분석
 
DLL 인젝션
DLL 인젝션DLL 인젝션
DLL 인젝션
 
(Fios#02) 3. 빠르게 끝내는 악성코드 분석과 대응
(Fios#02) 3. 빠르게 끝내는 악성코드 분석과 대응(Fios#02) 3. 빠르게 끝내는 악성코드 분석과 대응
(Fios#02) 3. 빠르게 끝내는 악성코드 분석과 대응
 
그로스 해킹(Growth Hacking)
그로스 해킹(Growth Hacking)그로스 해킹(Growth Hacking)
그로스 해킹(Growth Hacking)
 
2차원 평면상에서 가장 먼 두 점 구하기
2차원 평면상에서 가장 먼 두 점 구하기2차원 평면상에서 가장 먼 두 점 구하기
2차원 평면상에서 가장 먼 두 점 구하기
 
1.악성코드 최신 동향과 기법
1.악성코드 최신 동향과 기법1.악성코드 최신 동향과 기법
1.악성코드 최신 동향과 기법
 
(Fios#02) 7. 윈도우 10 포렌식 분석
(Fios#02) 7. 윈도우 10 포렌식 분석(Fios#02) 7. 윈도우 10 포렌식 분석
(Fios#02) 7. 윈도우 10 포렌식 분석
 
Virtualization technology for security
Virtualization technology for securityVirtualization technology for security
Virtualization technology for security
 
Power shell 악성코드 동향 20161118_차민석_디지털 포렌식 기술특강 공개판
Power shell 악성코드 동향 20161118_차민석_디지털 포렌식 기술특강 공개판Power shell 악성코드 동향 20161118_차민석_디지털 포렌식 기술특강 공개판
Power shell 악성코드 동향 20161118_차민석_디지털 포렌식 기술특강 공개판
 
2.악성코드와 분석 방안
2.악성코드와 분석 방안2.악성코드와 분석 방안
2.악성코드와 분석 방안
 
디지털포렌식, 이것만 알자!
디지털포렌식, 이것만 알자!디지털포렌식, 이것만 알자!
디지털포렌식, 이것만 알자!
 
Google Hacking
Google HackingGoogle Hacking
Google Hacking
 
시스템 보안에 대해 최종본
시스템 보안에 대해   최종본시스템 보안에 대해   최종본
시스템 보안에 대해 최종본
 
그로스해킹 세미나 #1
그로스해킹 세미나 #1그로스해킹 세미나 #1
그로스해킹 세미나 #1
 

Similar to 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요

[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)NAVER D2
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼mangonamu
 
졸업후 취업까지.ssul
졸업후 취업까지.ssul졸업후 취업까지.ssul
졸업후 취업까지.ssul승표 홍
 
(140118) #fitalk detection of anti-forensics artifacts using ioa fs
(140118) #fitalk   detection of anti-forensics artifacts using ioa fs(140118) #fitalk   detection of anti-forensics artifacts using ioa fs
(140118) #fitalk detection of anti-forensics artifacts using ioa fsINSIGHT FORENSIC
 
BoB Information Security Conference
BoB Information Security Conference BoB Information Security Conference
BoB Information Security Conference 남준 김
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)성일 한
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012Esun Kim
 
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기Hyeshik Chang
 
타입스크립트 잘 사용하기
타입스크립트 잘 사용하기타입스크립트 잘 사용하기
타입스크립트 잘 사용하기SanghoYun
 
bof기초+rtl+fake_ebp
bof기초+rtl+fake_ebpbof기초+rtl+fake_ebp
bof기초+rtl+fake_ebpone_two_12
 
16 학술제 마무리 자료
16 학술제 마무리 자료16 학술제 마무리 자료
16 학술제 마무리 자료Junyoung Jung
 
초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인H4C
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
 
Python MySQL을 활용한 대용량 데이터 수집
Python MySQL을 활용한 대용량 데이터 수집Python MySQL을 활용한 대용량 데이터 수집
Python MySQL을 활용한 대용량 데이터 수집Jongwon
 
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판Minseok(Jacky) Cha
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화Jaehoon Choi
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 

Similar to 제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요 (20)

[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼
 
졸업후 취업까지.ssul
졸업후 취업까지.ssul졸업후 취업까지.ssul
졸업후 취업까지.ssul
 
(140118) #fitalk detection of anti-forensics artifacts using ioa fs
(140118) #fitalk   detection of anti-forensics artifacts using ioa fs(140118) #fitalk   detection of anti-forensics artifacts using ioa fs
(140118) #fitalk detection of anti-forensics artifacts using ioa fs
 
BoB Information Security Conference
BoB Information Security Conference BoB Information Security Conference
BoB Information Security Conference
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
 
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기
 
타입스크립트 잘 사용하기
타입스크립트 잘 사용하기타입스크립트 잘 사용하기
타입스크립트 잘 사용하기
 
bof기초+rtl+fake_ebp
bof기초+rtl+fake_ebpbof기초+rtl+fake_ebp
bof기초+rtl+fake_ebp
 
16 학술제 마무리 자료
16 학술제 마무리 자료16 학술제 마무리 자료
16 학술제 마무리 자료
 
초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
Python MySQL을 활용한 대용량 데이터 수집
Python MySQL을 활용한 대용량 데이터 수집Python MySQL을 활용한 대용량 데이터 수집
Python MySQL을 활용한 대용량 데이터 수집
 
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
Native A/V
Native A/VNative A/V
Native A/V
 

More from NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

More from NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요

  • 1. 악성코드 분석 잘하고 싶어요 부제 : 엄마 저는 어떻게 하면 될까요?
  • 2. 김남준 ➤ 세종대학교 정보보호학과 ➤ UpRoot System Developer ➤ KITRI Best of the Best 3기 ➤ Interested in 악성코드 자동화 분석, 유사도 평가, 분산처리 ➤ 2014, 2015 CODEGATE, Inc0gnito Speaker
  • 3. IN THIS SESSION ➤ 악성코드 분석 진짜 잘하는법 (저도 못함) ➤ 악성코드 분석할려면 뭘 공부해야 되는가? ➤ 요즘 악성코드 분석하는법? ➤ 실전 분석! with Case Study
  • 5. “악성코드 분석은 과정만 알면 아기도 충분히 할 수 있습니다 - bunseokbot@UpRoot
  • 7. 분석 [ ANALYSIS ] ➤ 얽혀 있거나 복잡한 것을 풀어서
 개별적인 요소나 성분으로 나눔
  • 8. 악성코드 분석 ➤ 악성코드 [Malicious Code]
 악의적인 행위를 하기 위해 
 의도적으로 제작된 모든 프로그램 및 그 구성 요소 ➤ Conclusion
 악의적인 행위를 하는 프로그램에
 얽혀 있는 것들을 개별적인 요소로 분리하는 것

  • 9. 그럼 이 악성코드 분석을 왜 할까? AV Engine 개발 악성코드 패턴 분석 침해사고 대응 다양한 곳에 이용됨
  • 13. 그러면서 생긴 문제 Self Protection Organization
  • 14. 여러분들은 실제 분석하면서 이런 어려움을 만날겁니다 ➤ 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..?
  • 15. 또!
  • 17. 전체적인 프로세스 사건 대응사건 분석사건 발생 위 내용은 기관이나 사람에 따라 달라질 수 있습니다. ➤ 무슨 문제가 생겨서 사건 발생
 ex. 인터넷이 느려짐, 정보 유출, 데이터 삭제, 외부의 알림(?) ➤ 문제로 인한 피해 발생
 ex. 컴퓨터를 사용하지 못함, 회사는 일을 못함 ➤ 의뢰자는 빨리 해결되기 바람
  • 18. 전체적인 프로세스 사건 대응사건 분석사건 발생 위 내용은 기관이나 사람에 따라 달라질 수 있습니다. ➤ 어떻게 감염되었는가
 감염 경로를 통해 악성코드의 유형을 파악할 수 있습니다. ➤ 감염시키고 나서 발생한 피해
 ex. 문서 데이터가 전부 삭제, 공인인증서 유출, 로그인 시도 등(?) ➤ 어디와 통신하였는가, 이전에 유사한 경우는 없는가
 악성코드 제작자는 비슷한 경우가 더러 있습니다. 이러한 그룹을 생성해놓으면 분석에 용이!
  • 19. 전체적인 프로세스 사건 대응사건 분석사건 발생 위 내용은 기관이나 사람에 따라 달라질 수 있습니다. ➤ 어떻게 하면 치료 할 수 있는가?
 악성코드를 제거할려면 일단 분석한 내용을 가지고 Taint된 부분을 원상태로 복구 ➤ 피해 복구 방법 논의
 랜섬웨어의 경우에는 VSS 영역이나 기타 백업 데이터 활용
  • 20. 분석 방법론 Dynamic Analysis 동적 분석 Static Analysis 정적 분석
  • 21. 분석 방법론 Static Analysis (정적 분석) ➤ 악성코드의 내부를 살펴보기 
 위해 사용하는 분석 방법 ➤ 대략적인 행위를 파악하기 위해 사용하는 분석 방법이며 구조를 파악하는데 용이함 ➤ 장점 : 악성코드를 직접 실행하 지 않아도 행위를 대략적으로 
 알아낼 수 있다. ➤ 단점 : 난독화가 되어있는 경우 분석하기 어려워짐. :(
  • 22. 분석 방법론 Dynamic Analysis (동적 분석) ➤ 악성코드를 실제 환경이나 
 가상 환경에서 실행시켜 그 행 위를 관찰하는 분석 방법 ➤ 장점 : 정적 분석에서 알아내기 어려운 부분에 대해서 분석함 ➤ 단점 : 환경구축하기 어려우며 Host가 감염될 가능성이 높다
  • 23. IN MY CASE? 정적 분석 개시 분석한 내용을 가지고 동적 분석 with API Hooking 다시 내용을 가지고
  • 25. CASE STUDY #1 ➤ 뭔지 모름! ➤ Drive By Download 방식 ➤ 동작 OS : Windows ➤ Packer : Yes (EXE & Some..?) ➤ 최초발견일 : 20151128(어제!)
  • 28. PE STRUCTURE ➤ 실행 가능한 (Portable Executable) File Format ➤ EXE, SCR, DLL, OCX, SYS, OBJ 모두 이 File Format! ➤ OBJ 파일은 사실 실행은 안되지만 PE Specification 에 있습니다. ➤ 여기서는 이 부분에 대해서 자세히 설명은 하지 않도록 하겠습니다.
  • 29. WATCH IAT ➤ Import Address Table ➤ 프로그램이 어떤 Library에서 어떠한 function을 call 하는지 기술 ➤ Implicit Linking에 대한 정보만 제공해준다.
 -> 프로그램이 처음 실행될때 같이 로딩되어 종료될때 free되는 방식
  • 31. 이 악성코드가 사용하는 FUNCTION은? ➤ RegFlushKey - 레지스트리 키 변경한 것을 레지스트리에 입력 ➤ modf - 나눗셈 함수 ➤ PathFileExistA - 파일 존재 유무를 확인한다.
  • 32. FUNCTION SEARCH? ➤ 실제 함수는 엄청 많지만 외우기 어렵다 ㅠㅠ ➤ 그럴땐 바로 마소갓 MSDN을 참고하면 된다. ➤ 한글화도 그럭저럭 잘 되어있어 참고하기 좋다.
  • 33. EXEINFO ➤ Packer를 사용하였다! ➤ 이래서 제대로 분석되지 않았다. ➤ Packer 의 이름은 UPX ➤ 언패커가 있음! -> Failure :(
  • 35. 흠..? 좀 더 자세히 볼까 ➤ 정적 단계에서 Flow 분석하기 ➤ Interactive Disassembler (IDA) -> 엄청 비쌈 ➤ Immunity Debugger 로 가능함! -> 무료
  • 37. 실행 전 주의사항 ➤ 악성코드가 VMEscape하는 악성코드는 아닌가 ➤ 악성코드가 VM을 탐지하지는 않았는가 ➤ 설정상에서 완전하게 Host PC와 분리하였는가 ➤ 분석을 위한 도구를 설치하였는가
  • 41. API MONITOR ➤ 아 이 악성코드는 GetFileAttributes 함수를 통해 파일 확인 후에 파일을 생성하고, Registry를 조작하는 기능을 가지고 있다.
  • 42. 이 정보들을 통해서 알아낼 수 있는 것 ➤ 이 악성코드가 실제 사용하는 함수 -> 악성코드 행위 ➤ 감염 경로 -> 악성코드 제작자의 목적 ➤ 악성코드 C&C Server or Phishing Site -> 악성 행위 추측 ➤ 실제 동적 분석 -> 악성코드 행위 실제 확인 가능
  • 44. MY OWN ANALYZER ➤ 이러한 행위들을 자동화 해보고싶다면? ➤ 나만의 분석기를 만들어보자! ➤ using Python PEFILE!
  • 45. 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
  • 46. BASIC ➤ 파일을 로딩할려면 PE class 를 사용해야 합니다! ➤ 일단 pefile 모듈이 해당 exe 파일에 대한 정보를 파싱하는 작업 import pefile p = pefile.PE(’s.exe’)
  • 47. 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])
  • 48. PACKING DETECTION ➤ pefile 모듈에서는 패킹 탐지도 해준다! ➤ 방식은 엔트로피! -> 무질서함의 정도를 기반으로 탐지!
  • 49. PACKING DETECTION from pefile import * p = PE(’s.exe’) entro_info = [] for section in p.sections: entro_info.append([section.Name, section.get_entropy()])
  • 50. GET IMPORT INFORMATION ➤ 아까 PEView에서 볼 수 있었던 Import 정보를 가져올 수 있다. ➤ 이를 통해서 EXE 에서 사용하는 함수의 정보를 가져옴! ➤ 물론 명시적에 대해서만.. 이지만 그래도! ➤ 저는 MSDN API를 하나 만들어서 개인적으로 사용중입니다!
  • 51. 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)
  • 53. CONCLUSION ➤ 악성코드 분석은 전체 과정중에 하나입니다. ➤ 전체 사건의 퍼즐에 하나의 Piece에 불과합니다. ➤ 주위에 여러 부분들을 같이 고려하면서 분석하면 쉬워집니다. ➤ 그래도 일단 Assembly부터..?! ➤ 그리고 공격자가 주는 힌트를 너무 믿지 마세요 (Fake) ➤ 요즘에는 자동화 분석 보조도구들이 많이 나와있어서 공부하기 좋아요 ➤ 처음에는 분석 보조도구 좀 보다가 자기만의 도구를 만드는것도.. ㅎ