파일 Lab07-01.exe에서 발견한 악성코드를 분석해보자.
이 프로그램이 호출하는 함수의 목록이다.
1. 이 프로그램은 어떤 방식으로 컴퓨터가 재시작할 때마다 실행(지속 매커니즘)을 보장하는가?
MalService라는 서비스를 생성하여 실행한다.
2. 이 프로그램은 왜 뮤텍스를 이용하고 있는가?
OpenMutexA를 먼저 사용한 이유는 이미 생성된 뮤텍스가 있을 경우에 프로그램을 종료하여 시스템에서 실행 파일이 하나만 동작하게 설계한 것이다. 즉, 상호 배제 검증 과정이다.
3. 이 프로그램을 탐지할 때 호스트 기반으로 좋은 시그니처는 무엇인가?
위에서 확인한 Malservice라는 이름의 서비스와 HGL345라는 이름의 뮤텍스가 해당된다.
4. 이 악성코드를 탐지할 때 네트워크 기반으로 좋은 시그니처는 무엇인가?
Internet Explorer 8.0이라는 User-Agent를 이용하고, http://www.malwareanalysisbook.com 와 통신한다.
netcat으로 80번 포트를 리스닝한 결과 위와 같은 통신을 하는 것을 알 수 있었다.
5. 이 프로그램의 목적은 무엇인가?
6. 이 프로그램은 언제 실행을 종료하는가?
SystemTIme 구조체 안에 있는 멤버들을 0으로 초기화 시켜주고, 연도 값을 834h(2100)으로 설정해준다.
그렇게 되면 2100 1월 1일 자정을 뜻한다.
SetWaitableTimer의 인자인 lpDueTime은 위에서 설정한 시간 값이 해당된다.
그리고 WaitForSingleObject로 해당 시간까지 기다리게 한다.
쓰레드를 생성하는 것을 확인할 수 있는데,
여기서 esi에 20을 넣어 반복문의 카운트로 사용한다. 즉, 20개의 쓰레드가 생성된다는 의미이다.
CreateThread의 lpStartAddress는 쓰레드 시작 주소를 설정하는 인자이다.
StartAddress라는 함수는 4번에서 확인한 코드의 영역이다.
InternetOpenUrlA()를 통해 http://www.malwareanalysisbook.com 홈페이지를 를 무한하게 열 것이다.
정리하면, 이 프로그램은 시스템이 재시작할 때도 실행이 보장되는 MalService라는 서비스를 생성하고, 이를 뮤텍스로 한 번에 하나만 실행되게 한 뒤, 2100년 1월 1일까지 기다린다.
그 후, 20개의 쓰레드가 무한히 특정 주소를 다운로드 하여 서버에 부하를 일으키는 DDos 공격을 수행하게 만들어졌다.
'악성코드분석 > 실전 악성코드와 멀웨어 분석' 카테고리의 다른 글
실전 악성코드와 멀웨어 분석 실습 7-3 (0) | 2022.01.04 |
---|---|
실전 악성코드와 멀웨어 분석 실습 7-2 (0) | 2021.11.24 |
실전 악성코드와 멀웨어 분석 실습 6-4 (0) | 2021.11.22 |
실전 악성코드와 멀웨어 분석 실습 6-3 (0) | 2021.11.21 |
실전 악성코드와 멀웨어 분석 실습 6-2 (0) | 2021.11.20 |