[2024.09.20]
[정적 분석]
01. 디바이스 관련 API
> DeviceloControl
> GetLogicDriveStrings
> GetDriveType
02. 레지스트리 관련 API
> RegDeleteKey
> RegCloseKey
> RegCreateKey
> RegOpenKey
> RegqueryValue
> RegSetValue
> RegDeleteValue
> RegGetValue
03. 서비스 관련 API
> CreateService
> OpenService
> QueryServiceConfig
> CloseServiceHandle
> ChangeServiceConfig
> ControlService
> StartService
> OpenSCManager
04. 네트워크 및 인터넷 관련 API
> InternetGetConnectedState
> InternetOpen
> InternetOpenURL
> InternetReadFile
> Socket
> Send
> Recv
> Connect
> WSAStart
> WSACleanUp
*socket의 경우 구문을 알고 있으면 좋다
05. 뮤텍스 관련 API
> CreateMutex
> OpenMutex
> ReleaseMutex
06. 메모리 관련 API
> VirtualAlloc
> VirtualFree
> VirtualProtect
> HeapAlloc
> HeapFree
07. 프로세스 관련 API
> CreateProcess
> CreateThread
> ExitProcess
> TerminateProcess
Exit와 다른 점은 Terminate의 경우 정상 종료,
Exit의 경우 강제 종료 정도라고 생각하고 보면 된다
08. Thread 관련 API
> LoadLibrary
> ResumeThread
> CreateRemoteThread
[악성 코드 분석]
> 정적 분석
> 분석 파일: Lab01-01.exe
01. 자동화 분석
> 분석 도구: http://www.virustotal.com
> 분석 결과: 56/73(국내 백신: V3, Alyac 탐지)
오늘은 악성 코드 분석에 대해서도 정적 분석, 분석 파일이자 악성 코드인 Lab01-01.exe 파일을 분석하려고 한다
먼저 악성 코드 분석을 위해 virustotal.com 페이지로 들어가서
Lab01-01.exe 파일의 분석을 시작하게 되면 73개 중 56개의 악성 코드가 발견된다
제일 먼저 확인할 수 있는 것은 V3와 Alyac 정도가 있는 걸 확인할 수 있다
02. 해시 값 확인
> 분석 도구: WinMD5, HashCalc
> 분석 결과
MD5: bb74258d2141c107fd0e5106676bb1
SHA-256: 58989bd42c5bd3fbf39b1989eee5b39cd59108e8370be9ea986e
SHA-512: c40735ccc2df59136ea52da541ca101c63025d46abdf4535
*무결성을 검증할 수 있다
이번에는 해시 값 확인 비교를 위해 kalilinux 다운로드 이미지의 sum 값을 복사한다
Lab01-01.exe 파일의 해시 값을 찾기 위해 제일 먼저 HashCalc를 실행했다
실행 후 SHA-256에서 해시 값을 확인할 수 있고,
kali linux의 sum 값과 비교하여 둘의 해시 값이 다른 걸 알 수 있다
WinMD5를 이용할 수도 있지만, HashCalc에 비해 MD5의 해시만을 계산하기 때문에 HashCalc가 더 유용하다
화면에서 보이는 바와 같이 HashCalc의 경우 여러 가지의 해시 값을 확인할 수 있다
03. 패킹 여부 확인
> 분석 도구: PEiD, exeinfope, pestudio 등
> 분석 결과: 패킹 안 됨
해시 값 확인을 다음으로 패킹 여부를 확인해야 된다
먼저 PEiD를 통해 확인했을 때 EP Section이 .text로 나오며,
이 결과는 현재 패킹이 되어 있다는 뜻이다
PEiD와 같이 사용할 수 있는 것은 Exeinfope가 있다
PEiD와 비슷한 형태로 패킹 여부를 확인할 수 있다
pestudio도 있지만 둘에 비해서는 사용률이 적다
04. PE 구조 확인
> 분석 도구: PEView
> 분석 결과
컴파일 날짜: 2010/12/19 16:16:19 UTC
PE 구조 확인에 대해서는 PEView를 사용한다
Signature, FILE_HEADER, OPTIONAL_HEADEL가 제일 중요하다
패킹이 되어 있다면 .text, .rdata, .data 이 구조가 잘 확인되지 않는 점 참고하면 된다
현재 화면에서의 Table의 경우에는 API들이 모여 있는 곳이고,
API들이 Table을 거쳐서 가는 것을 알고 있으면 된다
현재 OPTIONAL_HEADER에서 코드의 사이즈가 1000번대로 시작하는 걸 PEView로 확인할 수 있다
확인 후 ollydbg로 실행하여 첫 번째 코드를 확인했을 때
1000번대로 시작하는 걸 볼 수 있다
05. DLL/API 정보 확인
> 분석 도구: Dependency Walker
> 분석 결과
PEView와 비슷한 형식으로 나타나지만, PEView에 비해 Dependency Walker는 자세하게 나온다
06. 파일 상세 분석
> 분석 도구: pestudio
> 분석 결과
전체적인 함수를 확인할 수도 있다
리버싱에서 배우던 ollydbg에서의 strings도 이렇게 확인할 수 있다
07. 문자열 검색
> 분석 도구: strings, ollydbg
> 분석 결과
strings를 실행하기 위해 cmd 창을 열어 해당 디렉터리로 이동 후
strings.exe 파일을 열어 실행하게 되면 문자열이 나오게 된다
이것을 조금 더 보기 편하게 저장하려면 텍스트 문서로 저장할 수도 있다
텍스트 문서로 확인했을 때 사용하지 않는 문자열을 제외하면
이런 식으로 사용 가능하며, 알아볼 수 있는 문자열이 나오게 된다
마지막으로 strings의 경우에는 ollydbg로도 확인할 수 있다
리버싱 시간에서도 자주 사용했던 방법으로 strings를 따로 확인할 수 있는 창을 볼 수 있다
강의 소감
오늘도 지난 시간에 이어서 사용 API에 대해서 알아봤다
또한, 이번 시간에는 악성 코드를 분석하는 실습도 같이 진행했다
순서대로 진행을 했지만 강의 시간이 다 되어 문자열 검색까지는 하지 못했다
그래도 이전까지의 분석은 끝났으므로 한 차례 분석은 미리 연습을 했다고 보면 될 것 같다