ݺߣ

ݺߣShare a Scribd company logo
으으리 리버싱 악성코드 ѫ
김˳석(kimgudtjr68@gmail.com)
Home page : https://euripy.github.io/#!index.md
튜토리얼
Assembley ѫ 시에
자주 등장하는
코드들에 대해 확인 해보자.
자주 등장하는 코드
• 함수 호출1 – 프로그래머가 만든 함수
• 함수 호출2 – 미리 만들어진 Library 함수
• 반복문
• 조건 분기문
함수 호출 1 – 프로그래머 제작 함수
위의 함수의 경우 Func1(arg1) 와 같은 ˳태 인 것을 알 수 있다.
함수 명이 보이지 않는 경우 해당 심볼이 없거나 프로그래머가 제작한 함수이다.
ѫ 시에 그냥 넘어가면 안 되는 함수 이기도 하다.
※ 정적으로 컴파일 된 라이브러리 일 수도 있다.
( IDA 와 같은 디버거로 보게 되면 보이는 경우도 있다. )
함수 호출 2 – 미리 만들어진 Libraray
위의 함수의 경우는
CreateFileA(FileName,0x120089,0,NULL,OPEN_EXISTING,0,NULL)
와 같이 번역 할 수 있다. 함수호출 시에 함수 이름이 보이며
Kernel32 라는 모듈내부에 이미 만들어진 함수 임을 알 수 있다.
이런 함수는 내부로 들어가서 ѫ 할 필요 없다.
반복문
위의 함수에서 JMP (Address) 와 같이 JMP하여 도착하는 코드의 위치가
위쪽을 향하는 것을 볼 수 있다. 이런 것은 반복적으로 사용하는 반복문에서
많이 볼 수 있다.
조건 분기문
위와 같이 TEST 혹은 CMP와 같은 명령어 연산 이후에 조건을 보고
JE 명령어로 분기하는 것을 볼 수 있다.
특히 TEST EAX, EAX는 자주 등장하는 명령어 이며
If eax == 0 조건이면 JE 다음 주소로 점프하는 경우이다.
해당 값이 0인지 아닌지 검사할 때 자주 등장한다.
ѫ 방법
정적 ѫ
동적 ѫ
정적 ѫ
위와 같이 HXD나 PEVIEW와 같이 해당 프로그램을 실행하지 않고
파일상에 존재하는 RAW DATA 만으로 해당 실행프로그램을 ѫ하는 경우이다.
동적 ѫ
Immunity Debugger 혹은 OLLYDBG 와 같은 메모리에 프로그램을
로드하고 명령어를 실행하면서 ѫ하거나
TcpView , ProcessExplorer와 같이 직접 프로그램을 동작시키고
해당 행위들을 모니터링 하는 것들이다.
OEP와 ImageBase Address
OEP
프로그램의 시작지점으로 Assembly으로 표현하면 아래와 같은 코드로 찾을 수 있다.
ImageBase Address
메모리에 각 모듈들이 Load된 주소들을 볼 수 있다.
각 모듈이 로드 된 시작 주소를 ImageBase Address 라고 한다.
ImageBase Address는 아래와 같은 주소로 구하거나
로드 할 수 있다.
ImageBase Address2
각 모듈들의 상세 구조
악성코드의 패턴 example
레지스트리 접근
파일 Drop
C&C 요청
악성코드 자동시작을 위한
레지스트리 생성
RegCreateKeyExA 함수로 SoftwareMicrosoftWindowsCurrentVersionRun
실행파일에 포함된 악성파일 Drop
자신의 실행파일 영역 중 Resource 영역에 Drop 할 실행파일을 숨기고
해당 실행 파일을 찾아서 Drop 하기 위해 FindResource 함수를 호출하는 것을
볼 수 있다.
공격자가 설정한 서버에 접속하여
악성코드 행위 결정
패킷의 내용을 보면 GET /~ 으로 시작하는 내용이 있는 것을 볼 수 있다.
이것은 해당 공격자 서버에 접속하여 악성코드가 어떤 행위를 할 것인지
혹은 어느 쪽으로 접속을 할 것인지에 대한 정보를 얻어 행동할 수 있다.
실습
• 준비된 악성코드 Sample 2개를 ѫ 해보자.

More Related Content

What's hot (17)

Python
PythonPython
Python
J J
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 ѫ 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 ѫ 방법론[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 ѫ 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 ѫ 방법론
GangSeok Lee
Windows reversing study_basic_1
Windows reversing study_basic_1Windows reversing study_basic_1
Windows reversing study_basic_1
J J
ǴƵƩ+ٱ+ڲ
ǴƵƩ+ٱ+ڲǴƵƩ+ٱ+ڲ
ǴƵƩ+ٱ+ڲ
one_two_12
Java 기초
Java 기초Java 기초
Java 기초
Hyosang Hong
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
Hyosang Hong
Linux reversing study_basic_3
Linux reversing study_basic_3Linux reversing study_basic_3
Linux reversing study_basic_3
J J
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
Esun Kim
141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍
Changwon Choe
Web hacking introduction
Web hacking introductionWeb hacking introduction
Web hacking introduction
J J
Jpa more
Jpa moreJpa more
Jpa more
Jonghee Lee
1. 악성코드 진단 기법 개론
1. 악성코드 진단 기법 개론1. 악성코드 진단 기법 개론
1. 악성코드 진단 기법 개론
Youngjun Chang
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
MinGeun Park
2. windows system과 file format
2. windows system과 file format2. windows system과 file format
2. windows system과 file format
Youngjun Chang
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장
SeongHyun Ahn
System+os study 7
System+os study 7System+os study 7
System+os study 7
J J
2. 악성코드 ѫ 방법론과 기법
2. 악성코드 ѫ 방법론과 기법2. 악성코드 ѫ 방법론과 기법
2. 악성코드 ѫ 방법론과 기법
Youngjun Chang
Python
PythonPython
Python
J J
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 ѫ 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 ѫ 방법론[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 ѫ 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 ѫ 방법론
GangSeok Lee
Windows reversing study_basic_1
Windows reversing study_basic_1Windows reversing study_basic_1
Windows reversing study_basic_1
J J
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
Hyosang Hong
Linux reversing study_basic_3
Linux reversing study_basic_3Linux reversing study_basic_3
Linux reversing study_basic_3
J J
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
Esun Kim
141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍
Changwon Choe
Web hacking introduction
Web hacking introductionWeb hacking introduction
Web hacking introduction
J J
1. 악성코드 진단 기법 개론
1. 악성코드 진단 기법 개론1. 악성코드 진단 기법 개론
1. 악성코드 진단 기법 개론
Youngjun Chang
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
MinGeun Park
2. windows system과 file format
2. windows system과 file format2. windows system과 file format
2. windows system과 file format
Youngjun Chang
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장
SeongHyun Ahn
System+os study 7
System+os study 7System+os study 7
System+os study 7
J J
2. 악성코드 ѫ 방법론과 기법
2. 악성코드 ѫ 방법론과 기법2. 악성코드 ѫ 방법론과 기법
2. 악성코드 ѫ 방법론과 기법
Youngjun Chang

Similar to 으리리버싱시즌3 (20)

제12회 IT4U 강연회 - 악성코드 ѫ 잘하고 싶어요
제12회 IT4U 강연회 - 악성코드 ѫ 잘하고 싶어요제12회 IT4U 강연회 - 악성코드 ѫ 잘하고 싶어요
제12회 IT4U 강연회 - 악성코드 ѫ 잘하고 싶어요
NAVER D2
악성코드와 ѫ 방안
악성코드와 ѫ 방안악성코드와 ѫ 방안
악성코드와 ѫ 방안
Youngjun Chang
Pe+file+format
Pe+file+formatPe+file+format
Pe+file+format
Jongseok Choi
악성코드와 ѫ 방안
악성코드와 ѫ 방안악성코드와 ѫ 방안
악성코드와 ѫ 방안
Youngjun Chang
악성코드 ѫ 도구
악성코드 ѫ 도구악성코드 ѫ 도구
악성코드 ѫ 도구
Youngjun Chang
2. 악성코드 ѫ 방법론과 기법
2. 악성코드 ѫ 방법론과 기법2. 악성코드 ѫ 방법론과 기법
2. 악성코드 ѫ 방법론과 기법
Youngjun Chang
6. code level reversing
6. code level reversing6. code level reversing
6. code level reversing
Youngjun Chang
2.악성코드와 ѫ 방안
2.악성코드와 ѫ 방안2.악성코드와 ѫ 방안
2.악성코드와 ѫ 방안
Youngjun Chang
Dll ѫ 방법
Dll ѫ 방법Dll ѫ 방법
Dll ѫ 방법
상윤 유
[2011 CodeEngn Conference 05] daly25 - 파일바이러스 ѫ 및 치료로직 개발
[2011 CodeEngn Conference 05] daly25 - 파일바이러스 ѫ 및 치료로직 개발[2011 CodeEngn Conference 05] daly25 - 파일바이러스 ѫ 및 치료로직 개발
[2011 CodeEngn Conference 05] daly25 - 파일바이러스 ѫ 및 치료로직 개발
GangSeok Lee
Pwnable study basic_2
Pwnable study basic_2Pwnable study basic_2
Pwnable study basic_2
J J
Windows reversing study_basic_5
Windows reversing study_basic_5Windows reversing study_basic_5
Windows reversing study_basic_5
J J
3. 악성코드 ѫ 사례
3. 악성코드 ѫ 사례3. 악성코드 ѫ 사례
3. 악성코드 ѫ 사례
Youngjun Chang
2006 03 15_pe & api hook
2006 03 15_pe & api hook2006 03 15_pe & api hook
2006 03 15_pe & api hook
용환 노
프로세스 방어
프로세스 방어프로세스 방어
프로세스 방어
주항 박
[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
GangSeok Lee
보안 위협과 악성코드 ѫ 기법
보안 위협과 악성코드 ѫ 기법보안 위협과 악성코드 ѫ 기법
보안 위협과 악성코드 ѫ 기법
Youngjun Chang
Codegate 2013 Junior - Music Player Exploit
Codegate 2013 Junior - Music Player ExploitCodegate 2013 Junior - Music Player Exploit
Codegate 2013 Junior - Music Player Exploit
sweetchip
Windosw via c 스터디20장.pptx
Windosw via c 스터디20장.pptxWindosw via c 스터디20장.pptx
Windosw via c 스터디20장.pptx
HolyTak
제12회 IT4U 강연회 - 악성코드 ѫ 잘하고 싶어요
제12회 IT4U 강연회 - 악성코드 ѫ 잘하고 싶어요제12회 IT4U 강연회 - 악성코드 ѫ 잘하고 싶어요
제12회 IT4U 강연회 - 악성코드 ѫ 잘하고 싶어요
NAVER D2
2. 악성코드 ѫ 방법론과 기법
2. 악성코드 ѫ 방법론과 기법2. 악성코드 ѫ 방법론과 기법
2. 악성코드 ѫ 방법론과 기법
Youngjun Chang
[2011 CodeEngn Conference 05] daly25 - 파일바이러스 ѫ 및 치료로직 개발
[2011 CodeEngn Conference 05] daly25 - 파일바이러스 ѫ 및 치료로직 개발[2011 CodeEngn Conference 05] daly25 - 파일바이러스 ѫ 및 치료로직 개발
[2011 CodeEngn Conference 05] daly25 - 파일바이러스 ѫ 및 치료로직 개발
GangSeok Lee
Pwnable study basic_2
Pwnable study basic_2Pwnable study basic_2
Pwnable study basic_2
J J
Windows reversing study_basic_5
Windows reversing study_basic_5Windows reversing study_basic_5
Windows reversing study_basic_5
J J
2006 03 15_pe & api hook
2006 03 15_pe & api hook2006 03 15_pe & api hook
2006 03 15_pe & api hook
용환 노
[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
GangSeok Lee
보안 위협과 악성코드 ѫ 기법
보안 위협과 악성코드 ѫ 기법보안 위협과 악성코드 ѫ 기법
보안 위협과 악성코드 ѫ 기법
Youngjun Chang
Codegate 2013 Junior - Music Player Exploit
Codegate 2013 Junior - Music Player ExploitCodegate 2013 Junior - Music Player Exploit
Codegate 2013 Junior - Music Player Exploit
sweetchip
Windosw via c 스터디20장.pptx
Windosw via c 스터디20장.pptxWindosw via c 스터디20장.pptx
Windosw via c 스터디20장.pptx
HolyTak
Ad

으리리버싱시즌3

  • 1. 으으리 리버싱 악성코드 ѫ 김˳석(kimgudtjr68@gmail.com) Home page : https://euripy.github.io/#!index.md
  • 2. 튜토리얼 Assembley ѫ 시에 자주 등장하는 코드들에 대해 확인 해보자.
  • 3. 자주 등장하는 코드 • 함수 호출1 – 프로그래머가 만든 함수 • 함수 호출2 – 미리 만들어진 Library 함수 • 반복문 • 조건 분기문
  • 4. 함수 호출 1 – 프로그래머 제작 함수 위의 함수의 경우 Func1(arg1) 와 같은 ˳태 인 것을 알 수 있다. 함수 명이 보이지 않는 경우 해당 심볼이 없거나 프로그래머가 제작한 함수이다. ѫ 시에 그냥 넘어가면 안 되는 함수 이기도 하다. ※ 정적으로 컴파일 된 라이브러리 일 수도 있다. ( IDA 와 같은 디버거로 보게 되면 보이는 경우도 있다. )
  • 5. 함수 호출 2 – 미리 만들어진 Libraray 위의 함수의 경우는 CreateFileA(FileName,0x120089,0,NULL,OPEN_EXISTING,0,NULL) 와 같이 번역 할 수 있다. 함수호출 시에 함수 이름이 보이며 Kernel32 라는 모듈내부에 이미 만들어진 함수 임을 알 수 있다. 이런 함수는 내부로 들어가서 ѫ 할 필요 없다.
  • 6. 반복문 위의 함수에서 JMP (Address) 와 같이 JMP하여 도착하는 코드의 위치가 위쪽을 향하는 것을 볼 수 있다. 이런 것은 반복적으로 사용하는 반복문에서 많이 볼 수 있다.
  • 7. 조건 분기문 위와 같이 TEST 혹은 CMP와 같은 명령어 연산 이후에 조건을 보고 JE 명령어로 분기하는 것을 볼 수 있다. 특히 TEST EAX, EAX는 자주 등장하는 명령어 이며 If eax == 0 조건이면 JE 다음 주소로 점프하는 경우이다. 해당 값이 0인지 아닌지 검사할 때 자주 등장한다.
  • 9. 정적 ѫ 위와 같이 HXD나 PEVIEW와 같이 해당 프로그램을 실행하지 않고 파일상에 존재하는 RAW DATA 만으로 해당 실행프로그램을 ѫ하는 경우이다.
  • 10. 동적 ѫ Immunity Debugger 혹은 OLLYDBG 와 같은 메모리에 프로그램을 로드하고 명령어를 실행하면서 ѫ하거나 TcpView , ProcessExplorer와 같이 직접 프로그램을 동작시키고 해당 행위들을 모니터링 하는 것들이다.
  • 12. OEP 프로그램의 시작지점으로 Assembly으로 표현하면 아래와 같은 코드로 찾을 수 있다.
  • 13. ImageBase Address 메모리에 각 모듈들이 Load된 주소들을 볼 수 있다. 각 모듈이 로드 된 시작 주소를 ImageBase Address 라고 한다. ImageBase Address는 아래와 같은 주소로 구하거나 로드 할 수 있다.
  • 15. 악성코드의 패턴 example 레지스트리 접근 파일 Drop C&C 요청
  • 16. 악성코드 자동시작을 위한 레지스트리 생성 RegCreateKeyExA 함수로 SoftwareMicrosoftWindowsCurrentVersionRun
  • 17. 실행파일에 포함된 악성파일 Drop 자신의 실행파일 영역 중 Resource 영역에 Drop 할 실행파일을 숨기고 해당 실행 파일을 찾아서 Drop 하기 위해 FindResource 함수를 호출하는 것을 볼 수 있다.
  • 18. 공격자가 설정한 서버에 접속하여 악성코드 행위 결정 패킷의 내용을 보면 GET /~ 으로 시작하는 내용이 있는 것을 볼 수 있다. 이것은 해당 공격자 서버에 접속하여 악성코드가 어떤 행위를 할 것인지 혹은 어느 쪽으로 접속을 할 것인지에 대한 정보를 얻어 행동할 수 있다.
  • 19. 실습 • 준비된 악성코드 Sample 2개를 ѫ 해보자.