2014年8月29日
株式会社Doctor Web Pacific
Trojan.DnsAmp.1は、DDoS攻撃を行うよう中国のウイルス開発者によって設計され、2014年5月にDoctor Webでも紹介したLinux.DnsAmpファミリーの、Windowsとの互換性を持ったバージョンです。このトロイの木馬は、そのうちの1つがトロイの木馬のメインペイロードである複数のファイル、および感染させたコンピューターのハードドライブ上に悪意のあるファイルを置くドロッパーで構成されています。Trojan.DnsAmp.1はSyn Flood、UDP Flood、Ping Flood、HTTP Get Floodなど様々な種類のDDoS攻撃を実行することができるほか、感染させたコンピューター上で悪意のある別のプログラムをダウンロード・実行する機能を備えています。
ドロッパー
ファイル末尾にある0x90バイトを読み込み、キー{F918FE01-164A-4e62-9954-EDC8C3964C1B}を使用したRC4アルゴリズムによって復号化します。復号化されたデータは以下のようになります。
struct DROP_INFO
{
char szFirstDrop[0x40]; // Name of the first file
DWORD dwFirstDropData; // Offset to the first file
DWORD dwFirstDropSize; // Size of the first file
char szSecondDrop[0x40]; // Name of the second file
DWORD dwSecondDropData; // Offset to the second file
DWORD dwSecondDropSize; // Size of the second file
}
ファイルデータの場所はオフセットで”dwSecondDropData–dwFirstDropData”および“Filesize + 0x90 – dwSecondDropData”です。その後、ドロッパーはキー{E5A42E7E-8130-4f46-BECC-7E43235496A6}を使用したRC4アルゴリズムによって最初のファイルを復号化し、別のキー{ADAB6D32-3994-40e2-8C18-2F226306408C}を使用して2つ目のファイルを復号化します。ファイルは%TEMP%フォルダ内に保存され、起動されます。
それらファイルの1つがTrojan.DnsAmp.1です。
インストール
このマルウェアは自動で起動されるWindows Test My Test Server 1.0.サービスとしてシステム上にインストールされ、その実行ファイルはvmware-vmx.exe.という名前で%System32%フォルダ内に保存されます。起動されるとシステムの現在の日付を確認し、それらが2013年2月21日よりも前であった場合、トロイの木馬はアクティブにはなりません。
悪意のあるペイロード
このトロイの木馬は2台のC&Cサーバーと接続を確立し、収集したシステムに関する情報をそれらのサーバーに送信します。感染させたコンピューターがWindows 7またはWindows NT環境で動作していた場合、送信されるデータはテンプレートPC_INFO_WIN7に従って構成されます。その他のバージョンのWindowsではテンプレートPC_INFOが使用されます。
struct PC_INFO
{
DWORD signature; //"UU\t"
char szOSVersion[16]; OS Version
DWORD dwSpuSpeed; // CPU speed in MHz
BYTE dummy[492]; // Zeros
}
struct PC_INFO_WIN7
{
DWORD signature; //"UU\t"
char szOSVersion[16]; OS Version
BYTE dummy[48]; // Zeros
DWORD dwSpuSpeed; //CPU speed in MHz
BYTE dummy1[444]; //Zeros
}
szOSバージョンでは次の値が可能です。
Windows NT
Windows 7
Windows Server 2008
Windows Vista
Windows Server 2003
Windows XP
Windows Server 2000
ネットワークインターフェースのトラフィックに関するデータは個別のスレッドで送信され、次のような構造になります。
struct PC_INFO_NETWORK_DATA
{
DWORD signature; // "??\b"
DWORD dwPacketsCount; //Bytes transferred
BYTE dummy[508]; //Zeros
}
Trojan.DnsAmp.1は悪意のある別のアプリケーションをダウンロード、実行することができます。データの送信後、このトロイの木馬はC&Cサーバーからのコマンドを待ちます。受信するパケットは以下の構造を持っています。
struct CMD_PACKET
{
DWORD Cmd; //command
BYTE Parameter[512]; //Command parameter
コマンドには次の3つがあります。
Cmd | Command | Comment |
---|---|---|
0x88 | Start a DDoS attack | |
0x9A | Stop a DDoS attack | Reset DDoS attack status |
0x77798 | Download and launch the file |
DDoS攻撃を開始するコマンドを受けとった場合、トロイの木馬はその時点での攻撃のステータスを確認し、既に攻撃が実行中であった場合はコマンドを無視します。
DDoS攻撃を開始するコマンドは次の構造を持っています。
struct DDOS_PARAMS
{
char szHost; //C-string containing a target IP address for the attack
DWORD dummy[95]; //Zeros
WORD wPort; // the target host's port, onto which the attack will be mounted
WORD dummy2; //Zeros
DWORD dwDuration; //DDoS attack duration in seconds
DWORD dwThreadsCount; //Number of threads involved in the DDoS attack
DWORD dwType; // DDoS attack type
DWORD dwFlag; //Additional parameter that can take different values depending on the attack type
}
実行可能な攻撃の種類
Cmd | Attack type |
---|---|
0x01 | Syn Flood |
0x02 | Syn Flood |
0x03 | UDP Flood |
0x04 | Ping Flood |
0x05 | HTTP Get Flood |
Linuxトロイの木馬をWindowsに適用する際、ウイルス開発者はDNS Amplification(アンプ攻撃)を使用せず、代わりにHTTP Get Floodを追加しています。
ファイルのダウンロード
ファイルをダウンロードするために、トロイの木馬はurlmon.dllコードをメモリ内にロードし、URLDownloadToFileA関数アドレスを取得します。ダウンロードリンクの位置はCMD_PACKETパラメータのオフセットで0になります。
ファイルは%TEMP%フォルダ内にダウンロードされ、ファイル名は次のように生成されます。
DWORD GetRnd(DWORD modulus)
{
DWORD dwTicks;
dwTicks = GetTickCount();
return ticks * (rand() + 3) % modulus;
}
...
dwRnd0 = GetRnd(26u) + 97;
dwRnd1 = GetRnd(26u) + 97;
dwRnd2 = GetRnd(26u) + 97;
dwRnd3 = GetRnd(26u) + 97;
dwRnd4 = GetRnd(26u) + 97;
wsprintfA(wszFileName, "%c%c%c%c%c.exe", dwRnd4, dwRnd3, dwRnd2, dwRnd1, dwRnd0);
strcat(szTmpDir, szFileName);
この脅威についての記事