1. 분석 환경
1.1. 분석 환경
l Windows 10 l Windows XP (VMware) |
1.2. 분석 도구
정적 분석 | l IDA |
1.3. 분석 샘플
Practical Malware Analysis Labs - Lab06-01.exe |
1.4. 질문
Lab 06-01: 이 랩에서는 Lab06-01.exe 파일에서 발견된 악성 코드를 분석합니다
- 메인 함수에서 호출되는 유일한 서브루틴에서 발견된 주요 코드 구조는 무엇인가요?
- 0x40105F에 위치한 서브루틴은 무엇인가요?
- 이 프로그램의 목적은 무엇인가요?
2. 분석 과정
2.1. 메인 함수에서 호출되는 유일한 서브루틴에서 발견된 주요 코드 구조는 무엇인가요?
답: internetGetconnectedstate함수를 호출하여 그 리턴값에 따라 분기하는 IF문
우선 main 함수를 찾는다. Functions view에 _main이라는 함수가 바로 보이지만, 확실히 하기 위해 User xrefs chart를 생성한다.
_main이 메인 함수가 맞고, sub_401000이 호출되는 유일한 서브루틴인 것을 확인했다.
Sub_401000를 살펴본다.
internetGetconnectedstate함수를 호출하여 그 리턴값에 따라 분기하는것으로 보인다.
https://learn.microsoft.com/ko-kr/windows/win32/api/wininet/nf-wininet-internetgetconnectedstate 에 따르면, 로컬 시스템의 인터넷이 연결되어있는지 여부를 판단하고, 되어있다면 어떤 형태로 연결되어있는지를 확인한다. 이때 반환값은 연결되어있을 경우 TRUE, 연결되어있지 않을경우 FALSE이다.
이러한 형태를 보이는 구조는 대표적으로 IF문이 있다.
F5를 눌러 해당 코드를 디컴파일 할 수 있는데, 예상대로 IF문이 나오는 것을 확인 할 수 있다.
2.2. 0x40105F에 위치한 서브루틴은 무엇인가요?
답: printf함수의 기능을 한다.
Sub_40105F는 두 군데에서 각각 특정 문자열을 push한뒤 호출된다.
문자열 뒤 \n 형식지정자가 있는 걸로 보아 printf의 기능을 할 것으로 보인다.
2.3. 이 프로그램의 목적은 무엇인가요?
이 프로그램의 목적은 사용자의 인터넷연결 상태를 확인한뒤, 연결되어있으면 “Success: Internet Connection\n” 을 출력하고, 연결되어있지 않다면 “Error 1.1: No Internet\n”이라는 문자열을 출력하는 것이다.
3. 실행 해보기
Lab06-01.exe를 실행하여 인터넷 연결여부에 따라 문자열이 다르게 출력되는지 확인한다.
▼인터넷이 연결되어있을 경우
▼인터넷이 연결되어있지 않을 경우
IDA에서 보았던 문자열이 그대로 출력되는 것을 확인할 수있다.