Reversing 11

[한글] 악성코드 분석 2

로드한 프로세스가 notepad.exe 가 아니라면 다른 프로세스 별로 다른 동작을 합니다. 우선 explorer.exe 인 경우, Sub_10052FA 함수를 호출합니다. Sub_10052fA 에서는 우선 필요한 함수 주소들을 로드합니다. 그리고 Elevation:Administrator!new:{3ad05575-8857-4850-9277-11b85bdb8e09} 이라는 값을 사용하는데, 이 값은 iFileOperation 의 CLSID 값을 정의한 것으로 해당 값으로 보았을 때 UAC 에서 관리자 권한이 사용되고 있음을 알 수 있습니다. 다음 코드는 sysprep.exe를 이용하여 악성 cryptbase.dll을 로드합니다. UAC 우회기법이 사용되고 있음을 알 수 있습니다. 그리고 다음 svchos..

[한글] 악성코드 분석 1

1. 개요 소위자료(2014.2.25) 수석전문위원소관.hwp 이라는 제목의 한글 악성코드 샘플 분석을 진행하였다. Filename 6dc8ec7ab4a774e6811279135af863da9db94a22.input Size 262KiB (268288 bytes) Description Hangul (Korean) Word Processor File 5.x Architecture WINDOWS SHA256 71abdc099d4cc2848e1eb3dda7f798ae819028052a34bc6a2b47bc3ec4fca59c 다음 악성코드에서 사용된 취약점은 문단의 레이아웃을 담당하는 HWPTAG_PARA _LINE_SEG의 구조체에서 발생하였다. 이 구조체를 개체 컨트롤 구조체로 착각하고 사용하여 흐름을 바꾸..

윈도우 바이러스 기초분석(Practiccal Malware Analysis) [LAB 06-03]

1. main 함수 호출과 실습 6-2의 main 함수와 비교하라. main 이 호출한 새로운 함수는 무엇인가? → 실습 6-2에서 없었던 sub_401130 함수가 생겼다. 2. 새로운 함수는 어떤 인자를 받는가? → sub_401040의 리턴값과 argv[0](실행파일명)을 받아온다. 3. 이 함수가 가지는 주요 코드 구조는 무엇인가? → a1의 값에 따른 switch 구문이다. 4. 이 함수는 무슨 일을 하는가? → 디렉토리 생성, 파일 복사, 파일 삭제, 레지스트리 탐색, sleep 등의 일을 한다. 5. 이 악성코드에서 호스트 기반의 행위가 존재하는가? → Software\Microsoft\Windows\CurrentVersion\Run, C:\Temp\cc.exe 등이 존재한다. 6. 이 악성..

윈도우 바이러스 기초분석(Practiccal Malware Analysis) [LAB 06-02]

1. main 함수가 호출하는 첫 번째 서브루틴은 무슨 오퍼레이션을 수행하는가? → 첫 번째 호출함수는 sub_401000 이다. → 401000함수는 인터넷 연결을 확인한다. 2. 0x40117f에 위치한 서브루틴은 무엇인가? → stbuf 와 ftbuf 가 있는 것으로 보아 printf 와 같이 문자를 출력하는 역할을 하는 것으로 보인다. 3. main 함수가 호출하는 두 번째 서브루틴은 무엇인가? → main 함수가 호출하는 두 번째 서브루틴은 sub_401040 이다. 4. 이 서브루틴에서 사용한 코드 구조는 어떤 유형인가? → 우선 http://www.practicalmalwareanalysis.com/cc.htm 에 인터넷 접속을 시도한다. → 그리고 읽어온 파일의 문자열을 하나씩 비교하는데,..

윈도우 바이러스 기초분석(Practiccal Malware Analysis) [LAB 06-01]

1. main 함수가 호출하는 첫 번째 서브루틴은 무슨 오퍼레이션을 수행하는가? → main 함수는 0x401000 함수를 호출하고 그 리턴값이 0인지, 아닌지에 따라서 eax 값을 바꿔준다. 2. 0x4015f에 위치해 있는 서브루틴은 무엇인가? → stbuf와 ftbuf를 사용하고 있다. 검색해 보니 printf에 사용되는 함수이다. 3. 이 프로그램의 목적은 무엇인가? → main 은 sub_401000의 리턴값이 0 인지, 아닌지를 검사한다. → sub_401000() 함수는 InternetGetConnectedState 함수를 사용하므로, 인터넷 연결을 확인함을 알 수 있다. 인터넷이 연결되어 있으면 sub_40105F를 호출하여 Success 를 출력하고, 인터넷이 연결되어 있지 않으면 Err..

윈도우 바이러스 기초분석(Practiccal Malware Analysis) [LAB 05-01] -2

9. 0x1000FF58에서 서브루틴으로 수백라인은 문자열을 비교하기 위한 일련의 memcp 비교다 robotwork 와 문자열 비교가 성공적으로 이뤄지면 무슨 일이 일어나는가? → robotwork와 문자열 비교가 성공하면, sub_100052A2 함수가 실행된다 → 다음 함수에서는 Robot_WorkTimes, Robot_WorkTime, SOFTWARE\Microsoft\Windows\CurrentVersion 의 레지스트리에 접근한다. 10. PLIST 익스포트는 무슨 역할을 하는가? → Expots View 의 PSLIST 의 주소는 0x 10007025이다 → 첫 번째 함수는 시스템 플랫폼과 운영체제 버전을 검사한다. → 조건문의 두 가지 함수 모두 프로세스 리스트를 받아온다. 결과적으로 PS..

윈도우 바이러스 기초분석(Practiccal Malware Analysis) [LAB 05-01] -1

IDA Pro 만을 이용해 파일 Lab05-01.dll내의 악성코드를 분석하라. 이 실습의 목적은 IDA Pro를 직접 다루는데 있다. 이미 IDA Pro를 사용해 본 적이 있으면 다음 문제를 무시하고 악성코드 리버싱에 초점을 맞춰도 좋다 1. DLLMain 의 주소는 무엇인가? → 0x1000D02E 이다. 2. Imports 윈도우를 이용해 gethostbyname을 탐색해보자. 임포트 위치는 어디인가? → 0x100163CC 이다. 3. Gethostbyname을 호출하는 함수는 몇 개인가? → Gethostbyname 에서 xrefs윈도우를 살펴보면 p 가 호출되는 부분이고, r 이 읽어오는 부분이므로 총 9번 호출되고 있음을 알 수 있다 4. 0x10001757에 위치한 gethostbyname..

윈도우 바이러스 기초분석(Practiccal Malware Analysis) [LAB 03-04]

1. 이 파일을 실행시킬 때 어떤 일이 발생하는가? → ProcessExplorer에서 Lab03-04.exe 를 실행시킨 후 살펴보니 Lab03-04.exe에서 conime.exe 의 자식 프로세스를 생성하였고, 그 자식프로세스로 cmd.exe가 생성되었다 그 후에 Lab03-04.exe 가 삭제되었다. 2. 동적 분석시 장애물이 무엇인가? → 해당 파일 실행 후 삭제가 되므로 이후의 분석이 불가능하다. 3. 이 파일을 실행시키는 다른 방법이 없는가? → String을 살펴보니, 주소나 레지스트리 위치 cmd 옵션으로 보이는 문자열등이 보인다. 그러나 기초적인 분석으로는 실행방법을 아직 알아낼 수 없었다.

윈도우 바이러스 기초분석(Practiccal Malware Analysis) [LAB 03-03]

1. Process Explorer 로 이 악성코드를 모니터링 했을 때 무엇을 알아냈는가? → 처음에 Lab03-03.exe. 프로세스가 생기고, 자식 프로세스로 svchost.exe 가 생성되었다. 그리고 Lab03-03.exe 프로세스가 사라져서 svchost.exe는 고아 프로세스가 되었다. 2. 실시간 메모리 변조를 확인할 수 있는가? → svchost.exe의 속성의 Strings를 살펴보니 Image String 과 Memory String 이 다름을 알 수 있다. 3. 악성코드임을 의미하는 호스트 기반 표시자는 무엇인가? → 우선 svchost.exe 에서 practicemalwareanalysis.log 와 [ENTER] 같은 문자열을 볼 수 있는데 이는 일반적으로 발견되지 않는 문자열이다..

윈도우 바이러스 기초분석(Practiccal Malware Analysis) [LAB 03-01]

1. 악성코드의 임포트 함수의 문자열은 무엇인가? → 분석결과 KERNER32.DLL의 ExitProcess만 검출되었는데 이렇게 적게 나온 이유는 패킹되어있을 확률이 높다. → PEID 로 확인결과, PEncrypt 3.1 Final -> junkcode 로 패킹되어있음을 확인할 수 있다. → Unpacking을 진행하려고 하였으나 문서 부족으로 일단 분석을 진행하기로 하였다. 2. 악성코드임을 의미하는 호스트 기반 표시자는 무엇인가? → www.practicalmalwareanalysis.com 의 주소를 확인해 줄 수 있다. → 실행 될 것으로 추정되는 exe 파일도 발견할 수 있다. → 특정 계정에 대해 윈도우 시작 프로그램을 영구적으로 등록하는 레지스트리인 SOFTWARE\Microsoft\Wi..