1. lab 6-3과 비교했을때 main에서 변경된 부분

sub_401000함수는 인터넷 연결상태를 확인하고 sub_401040함수는 User-Agent를 "Internet Explorer 7.50/pma%d"로 설정하고 경유지에 연결하여 내용을 읽어온다.

읽어온 html의 데이터를 파싱하여 처음 문자열이 <!--인지 확인한다.

sub_4012B5함수는 print함수이고 sub_401150함수는 switch구문이다.

 

이전과 동일한것들은 0x401000(인터넷연결 확인함수), 0x401040(HTML파싱), 0x4012B5(printf)는 동일하다.

추가로 왼쪽에 반복문이 추가된것을 확인 할 수 있다.

 

2. lab 6-3과 비교했을떄 sub_401040에서 변경된 부분

전에 HTML파싱을 수행했던 0X401040서브루틴의 경우 인자값이 없었는데 6-4에서는 for문의 var_c변수를 인자값으로 받는다.

인자값이 어떻게 사용되는지 살펴보면 sub_401040의 매개변수 a1으로 선언되어 sprintf함수의 세번째 인자로 사용된다.

 

3. 해당 악성 프로그램에서 네트워크 기반에 대한 지표 무엇

새로운 User-Agent인 Internet Explorer 7.50/pma%d"를 사용하였다. 여기서 %d는 프로그램이 실행되는 분을 나타내는 숫자이다.

공격자가 악성코드가 얼마나 오랫동안 작동하지는지 추적하기 위해 웹서버를 관리하고 모니터링하는데 이용된다.

얼마나 동작하는지 보기위해 sleep함수를 보면 0EA60h는 60,000으로 60초이다.

for문이 1440번 반복되어 60이 곱해지면서 1440분이 된다. 1440분은 24시간으로 하루동안 동작하는 프로그램이다.

 

4. 해당 악성 프로그램의 목적

인터넷 연결을 확인하고 특정 User-Agent를 이용해 프로그램이 동작하는 분을 나타내는 숫자를 추적하는 카운터를 담고있는 웹페이지의 다운로드를 시도한다.

다운로드된 웹 페이지는 <!--로 시작하는 임베디드 HTML주석을 담고있다.

주석 다ㅏ음 문자는 로컬 시스템에서 동작을 결정짓는 swith구문에 사용된다.

하드코딩된 동작으로 파일삭제, 디렉토리 생성, 레지스트리 실행키 설정, 100초간 sleep기능, 프로그램은 종료되기 전까지 24시간 동안 동작할 것이다.

 

참고

https://redscreen.tistory.com/100?category=197361

https://m.blog.naver.com/wwwkasa/220345445200

'보안 > 리버싱' 카테고리의 다른 글

LAB 6-3 실습  (0) 2021.11.20
[리버싱] DLL Injection, DLL Ejection 코드  (0) 2021.11.13
[리버싱] 드림핵 rev-basic-8 풀이  (0) 2021.11.13
[리버싱] 드림핵 rev-basic-7 풀이  (0) 2021.11.13
IAT, EAT 로딩 과정  (0) 2021.10.02

+ Recent posts