RussKill
Malware Analysis 2010. 1. 6. 05:55 |1.개요
악성코드를 분석할 때는 항상 해커들의 입장에서 분석하려고 노력한다. 따라서 서비스 공격이나, 서비스거부공격, 웹해킹등을 간단하게 할 수 있는 방법이 없을까? 혹은 많은 사용자들에게 감염시킬 수 있는 방법이 없을까에 대해서 항상 질문하고 방법을 찾는데, 이번에 분석한 악성코드 역시 그러한 생각 때문에 찾은 악성코드이며, 12월 17일 Opensive Computing에 RussKill. Application to perform denial of service attacks 라고 소개되었으며, 아직 국내 사이트에서 다룬적이 없는 악성코드이다. -어려운 것도 아니고 그냥 보통의 악성코드와 비슷하다- 따라서 탐지명을 RussKill로 가정하고 진행한다.
2.RussKill이란.
RussKill은 DoS(혹은 DDoS)를 발생시킬 수 있는 툴로서 기능들이 Opensive Computing에서 소개하듯이 Extremely 할 정도로 간편화 되어 사용할 수 있으며, C&C서버도 자동으로 구성하여 타겟을 지속적으로 바꿀 수 있다(실질적으로 분석하는 도중에도 여러 도메인으로 계속 바뀌었다).
또한, RussKill은 HTTP-Flooding, SYN-Flooding 공격을 수행할 수 있으며, 공격자가 서버에서 시간당 발생패킷을 지정하여 PPS를 조절할 수 있다. 이 모든 과정이 모두 마우스 클릭으로 바로바로 이루어진다.
3. 공격 시나리오
① Attacker가 RussKill을 웹서버에 구동한다.(이 과정에서 악성코드과 Target Server가 설정된다)
② Victim들이 악성코드를 다운로드한다. (본 공격의 효율성을 위해서는 상관없는 여러 사이트들에
감염시키는 것이 좋으나, 현재는 모두 한곳에서만 다운로드 한다.)
③ 악성코드에 감염된 사용자가 C&C서버로 접속한다. 여기서 C&C는 Web서버의 php페이지이다.
④ 감염된 Victim Group들이 설정된 C&C서버에서 전달받은 서버로 공격을 수행한다.
⑤ Victim Group들은 지속적으로 C&C서버로(설정값에 따라 시간변동) 접근하여 변경내용을 확인한다.
⑥ Attacker는 Victim의 개수를 파악하고 공격의 중지 혹은 Target Server를 변경할 수 있다.
4. 악성코드 분석
실제적으로 google을 통해서 찾은 악성코드는 www.kimosimotuma.cn/999/wihpg.exe 지만, malwareurl.com이나 malwaredomainlist.com을 통해 찾은 Russkill관련 도메인은 다음과 같다.
[그림1] malwaredomainlist.com에서 신고된 domain
Kimosimotuma.cn과 atatata.org, glousc.com 3개의 도메인 모두 중국 IP이며, atatata.org와 glosc.com은 IP가 115.100.250.107이었으며, kimosimotuma.cn은 115.100.250.104 마지막 IP만 다른걸 봐서는 공격자가 같을 것이라고 추측할 수 있다.(이를 증명하는 것은 뒤에도 나오므로 차후에 설명하기로 한다)
1) www.glousc.com/hellotobad/hellotobad.exe을 다운로드
[그림2] 악성코드 다운로드
2) 바이로봇 탐지내역 확인
[그림3] 바이로봇 탐지결과
바이로봇뿐만 아니라 virustotal.com에서 돌렸을 경우 대부분의 백신에서 탐지를 하지만, 수많은 악성코드의 변종으로 검사된다.
※ 그중에서 Microsoft, AntiVir, eTrust-Vet의 경우 Ruskill로 탐지한다.(발빠르게 대처한건가?)
3) Wireshark 구동 후 악성코드 수행
[그림4] 패킷 확인 결과
Glousc.com에서 받은 hellotobad.exe는 glousc.com/hellotobad/r.php 에 접속 후 다른 도메인으로 SYN 패킷을 발생시켰으며, kimosimotuma.cn에서 받은 wihpg.exe는 kimosimotuma.cn
/999/r.php에 접속 후 다른 도메인으로 SYN패킷을 발생시켰다. 또한, 두개의 악성코드 모두 서비스에 등록하여 재부팅시 두개 모두 kimosimotuma.cn/999/r.php에 접속하여 Target Server를 가져오는 것을 확인하여 공격자가 동일한 것으로 가정할 수 있다.
r.php는 Follow TCP Stream으로 확인한 결과 다음과 같았으며 r.php에 접속하여도 같은 결과를 볼 수 있다.
[그림5] Follow
[그림6] glousc.com/hellotobad/r.php
[그림7] atatata.org/888/r.php
[그림8] kimosimoutma.cn/999/r.php
그림6,7,8에서 확인하였듯이 각각의 서버마다 지정해놓은 Target Server가 달랐으며, 실질적으로 분석을 수행할 때 가끔씩 Target이 바뀌었으며 그때마다 r.php는 바뀌어 있었다. 또한, r.php로만 주기적으로 접근을 시도할뿐 Target Server로 패킷을 잠시 안보낼 경우도 있는데, 이 경우 역시 공격자가 임의적으로 Stop을 걸어놓았다고 가정할 수 있다.
SYN Packet을 발생시키는 것도 분석할 때마다 초당 많게는 5,000 적게는 100 PPS정도 발생되었다. 이 역시 공격자가 임의적으로 조작한 것으로 추정된다.
[그림9] SYN Packet 발생
4) Reversing
해당 코드는 ASPack에 의해 Packing되어 있어서 자세한 구조를 확인하기 어려워 Unpacking을 수행하여 해당 코드를 살펴보았다.
해당 악성코드는 두개 모두 c:\windows\system32\winsrir.exe 를 생성하였으며, 그 외에는 파일 생성 하는 과정이 없었다.
위의 함수에서 실질적으로 레지스트리를 수정 및 키값을 생성하며 목록은 다음과 같다
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_WINSRIR
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_WINSRIR\0000
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_WINSRIR\0000\Control
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\winsrir
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\winsrir\Security
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\winsrir\Enum
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_WINSRIR
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_WINSRIR\0000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_WINSRIR\0000\Control
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\winsrir
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\winsrir\Security
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\winsrir\Enum
위의 목록중 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\winsrir에서 윈도우 서비스에 등록된다.
위의 레지스트리 편집기에서 DisplayName 부분이 한문으로 깨져서 나오지만 실질적으로 등록된 서비스를 확인해보면 Services Windows Controller로 동록 된다.
[그림14] 서비스 등록
5. RussKill 정보
Russkill이라는게 소개된지도 얼마되지 않았기 때문에 관련된 정보가 많지 않다. 실제적으로 http://planety-hackeram.ru 라는 러시아 해킹툴 다운로드사이트에서 관련된 자료를 다운로드할 수 있는것으로 파악되는데 사이트를 번역해가면서 가입해본 결과 wmz(webmoney)를 요구한다.
Opensive computing이나 최초발견자들의 개괄적인 분석내용을 살펴보면 다음과 같은 그림들을 확인할 수 있는데 여기서 개괄적인 정보를 유추할 수 있다. Online이란 현재 r.php에 접속해서 받아가는 Victim의 수이며, URL은 Target-server, 초당 packet 발생 수, 공격의 중지 혹은 target server 변경등이 가능한 것으로 보인다.
[그림15] Russkill 정보#1
[그림16] Russkill 정보#2
공격에 대한 셋팅이 이루어지므로, 웹서버 어떤 페이지는 로그인하는 화면이 있을 것으로 생각하고 blind로 페이지를 요청해보았으며 다음과 같은 로그인 창을 찾을 수 있었다.
[그림17] Russkill 로그인 창
(Brute Force의 욕구가 잔뜩)
기존에 해외에서 신고된 도메인의 URI는 기본적으로 /연속된숫자3자리/r.php 이다. 물론, 공격이 여러건 나온 것이 아니니 Russkill을 default로 설치하면 저렇게 될 것이다 가정하였을 경우 패턴의 입력이 가능하다. 하지만 snort의 경우 /\[0-9]{3}\/[Rr]\.[Pp][Hh][Pp]와 같은 형식으로
### r.php로 접속했을때 target server 주소 앞에 숫자|숫자|숫자|숫자 되어 있는 부분에 따라서
공격의 수행여부(혹은 중단) 패킷의 발생빈도 이런걸 나타내는데 2,4번째 필드부분을 아직 못찾아서;
또 삽질을 해야하나;;
'Malware Analysis' 카테고리의 다른 글
악성코드 분석을 위한 스크립트 만들기!! #1 (1) | 2011.01.13 |
---|---|
악성코드 수집 (0) | 2010.03.21 |