日曜日, 5月 29, 2011

Zeus/ZBot 2.0.8.9のコードのレビュー


大分迄から私がずっとZeuSボット/ZBotをモニターしました、このブログには何回も書きました。今回ZeuSボットのバーション2.0.8.9のソースコードがリークされた時に調査依頼が来ましたので、もう一度ZeuSボットを書きます。

■バックグラウンド
先ずは現時点ではZeuSがバーション2しか発見していませんので、下記の履歴情報が明確に書いてあります↓

リークされたコードは2.0.8.9ですので、恐らく最新版ではありません。但し中身を確認したら本物のZeuSコードですと確認しました。

リークされたZeusのソースコードはC++コード(大体32,500ライン)とPHPコード(大体7,500ライン)で作ったコードです。C++のコードZeusビルダーのコードとUIでPHPコードはウェブインターフェースGUIとなります。コードに対応しているOSではXP、Vista、Seven、Server 2003、Server 2003 R2、Server 2008とServer 2008 R2とx32/x64環境です(そうです、x64にコンパイルしましたら動きます)。詳細な環境requirementがここで確認が出来ます。下記はZeuSのUIスナップショット↓
※ビルダー↓

※GUI↓


自分はC++少しは分かるので、色々コードの中に見たらこのバーションZeuSボットの動き、どんな書き方を発見したかというとこのブログに説明します。この情報を分かれば今後本件のマルウェア対策がもっときちんと対応が出来るかと思われます。

■一人のプログラマーで作ったコードって分かりました↓
何故か分かったかと…同じプログラミングのクセが何回も見えています、例えば…
・英語の基本的な文保ミスが多い↓


↑このクセに当たって基本的な文保ミスが多いので母国語が英語じゃないと確認が出来ました。

・コードのcondition/loopの条件の書き方が長い、この方はこの書き方が好きみたいですね、このクセを診たら良くあるSOLOIST(1人)のプログラマーの書き方だと思います↓

・コメントは必ず「//」で書いてます。
・"GOTO"のジャンプの遣り方が結構使われてます。

■コードを書いた人が東ヨーロッパ経由のプログラマー
今迄の疑問がはっきり分かりました、間違いなく東ヨーロッパの方の作ったマルウェアですね。何故かというと↓
・ロシア語のコメントが結構多いですので、自分の為にコメントは殆どロシア語使っています↓

但し、色んな環境エディターで中々読みにくい、例えば↓Cyrilicだけど文字化け…

・ロシア語版のインターフェースも発見されていますは例えば下記のUIメッセージ↓

・誰でも使えるようにこの方は頑張って英語のメッセージを用意したみたいので、上記に書いたように母国語が英語じゃないと確認が出来ました。

■ZeuSボットのソフト仕組み

上記のダウンロードしたコードの中にを色々見たらこのバーションのZeuS仕組みを説明が出来ます↓
・感染されたらZeuSボットは全てパソコンにあるプロセスにコードをインジェクトする動きを発見しました。
・目的は上手く行けるプロセスでパソコンにrootkitをインストールする動きを発見
・上記2件の為に沢山windowsのライブラリーを使われており、オリジナルバイナリーが無いと分かりました。
・インジェクトが出来たら「Core::_injectEntryForModuleEntry」の「routine」を実行されます、「Core::_injectEntryForModuleEntry」の目的はここでシステムのOEPのフックとコールのポイントを決めるみたいですね。ZeuSボットのオップションによりますが「Core::_injectEntryForModuleEntry」が最初から立上る時もあります。「Core::_injectEntryForModuleEntry」が重要で、ここで次のプロセスを起動されます↓
・TCPサーバを起動されます、目的はキーロガーとスクリーンショット画像を取る為にプロキシでサービスが動いております。
・BackConnectサービスが立上り、コミュニケーションセンターの目的ですが下記詳細情報を説明します。
・CONFIGアップデーターのサービス(何分1回にパソコンの最新情報を取ります)
・レポートのサービス、ボットネットのC&Cに情報を送る事をやっています。
・感染サービス、MUTEXの情報をチェックし未だ感染されていないプロセスが見えたら幹線する動きをやっています。
・Autorunサービス、200ミリ秒1回にパソコンのレジストリー(HKCU\..\Run)に書き込みします。目的はボットのサービスがやり続くように…
・WINNET/Nsrp4を使いIEやFirefoxのブラウザとFlashのCOOKIEを取る、アップロードする、削除する事をやっています。
・WINNETを使い、パソコンに登録されたSSL認証を取る、アップロードする、削除する事をやっています。
・FlashFXP3、TotalCommander、WS_FTP、FileZilla、FAR Manager、WINSCP、FTP Commander、CoreFTPとSmartFTPの
FTPアカウントログイン情報とパスワードを取る、外に送る事をやっています。
・Windows Mail、Windows Contact Book、Outlook Express、Windows Address Bookからのメールアカウント情報と全てやり取りメールアドレスを取る、外に送る事をやっています。

■IPV6のデュアルスタック対応
・現在検証迄には行かないけど(私はipv6のデュアルスタック環境が無いから)コメントを見たらIPV4とIPV6に対応するつもりと見えます↓

■back-connectサービス

ZeuSのコードにはBackConnectボットの機能があります。コンポネントは下記となります↓

BackConnectボットとはBackConnectサーバのクライアントソフトで、サーバからのIM(インスタントメッセージ)プロトコル経由のコマンドを聞き、コマンドをZeuSボットクライアントソフトに渡すし、サーバにもコマンドを返します。この2つポート番号設定とIPv4/IPv6の設定がコマンドラインで出来ます。SYNTAXは下記となります↓
Zsbcs.exe listen –ipv4 –bp:[bot port] –cp:[client port]
追加情報、パソコンI/Oのやり取りを見たら、server:port:protocolの情報を書き込みと読み込みがると見えます。
BackConnectボットを起動した時にVNCサーバを起動します。下記がVNC機能の説明となります。BackConnectボットのコードスナップショット↓

下記はBackConnectサービスのセッティング確認スナップショット↓

■VNCサービス
このVNCのコードもZeuSコードの中に発見しました

ZeuSのVNCサーバは「Socks4/5/socks4a」とTCP Tunnelプロトコルには対応していいます。VNCサービスの作り方仕組みがいいと思います。なるべくオリジナルコードを使うよりもパソコンのUSER32のAPIとGDI32/KERNEL32/USER32の機能をコールしてVNCサービスを作りました。ZeuSのVNCサービスは2つSOCKETしか開けません、一つはback-connectサービスからのTCP Tunnel情報を聞く為に、と、もう1つは情報を返す為にです。
下記はVNCサーバの確認スナップショット↓

■ZeuSボットのAPI一覧

上記はZeuSボットクライアントが使っているAPI一覧です。キーワードのコピーの為に下記のテキストを使えると思います↓
ntdll!LdrLoadDll ntdll!NtQueryDirectoryFile
kernel32!GetFileAttributesExW wininet!HttpSendRequest(Ex)A/W
wininet!InternetCloseHandle wininet!InternetReadFile(ExA)
wininet!InternetQueryDataAvailable wininet!HttpQueryInfoA
ws2_32!send/WSASend ws2_32!closesocket
user32!TranslateMessage user32!GetClipboardData
crypt32!PFXImportCertStore 

他のリファレンスはVNCサービスのAPIとなります↓
OpenInputDesktop, SwitchDesktop, DefWindowProcA/W, DefDlgProcA/W, DefFrameProcA/W, DefMDIChildProcA/W, CallWindowProcA/W, RegisterClass(Ex)A/W, BeginPaint, EndPaint, GetDCEx, GetDC, GetWindowDC, ReleaseDC, GetUpdateRect, GetUpdateRgn, GetMessagePos, Get/SetCursorPos, Get/SetCapture, ReleaseCapture, GetMessageA/W, PeekMessageA/W
※上記のAPI説明では名前を見たら大体意味が分かるかと思います

■リモートの繋ぎ先の方法
ソースコードパッケージに書いたように下記のサイト一覧にZeuSの繋ぎ先情報となります、HTTPとHTTPSプロトコルに対応しています↓
*.ebay.com/*eBayISAPI.dll?*
*//mail.yandex.ru/
*//mail.yandex.ru/index.xml
*//money.yandex.ru/
*//money.yandex.ru/index.xml
*/my.ebay.com/*CurrentPage=MyeBayPersonalInfo*
*banquepopulaire.fr/*
*wellsfargo.com/*
hxxp://*.osmp.ru/
hxxp://caixasabadell.net/banca2/tx0011/0011.jsp
hxxp://www.hsbc.co.uk/1/2/personal/internet-banking*
hxxps://areasegura.banif.es/bog/bogbsn*
hxxps://banca.cajaen.es/Jaen/INclient.jsp
hxxps://bancaonline.openbank.es/servlet/PProxy?*
hxxps://bancopostaonline.poste.it/bpol/bancoposta/formslogin.asp
hxxps://banesnet.banesto.es/*/loginEmpresas.htm
hxxps://banking*.anz.com/*
hxxps://cardsonline-consumer.com/RBSG_Consumer/VerifyLogin.do
hxxps://carnet.cajarioja.es/banca3/tx0011/0011.jsp
hxxps://easyweb*.tdcanadatrust.com/servlet/*FinancialSummaryServlet*
hxxps://empresas.gruposantander.es/WebEmpresas/servlet/webempresas.servlets.*
hxxps://extranet.banesto.es/*/loginParticulares.htm
hxxps://extranet.banesto.es/npage/OtrosLogin/LoginIBanesto.htm
hxxps://hb.quiubi.it/newSSO/x11logon.htm
hxxps://home.cbonline.co.uk/login.html*
hxxps://home.ybonline.co.uk/login.html*
hxxps://home.ybonline.co.uk/ral/loginmgr/*
hxxps://home2ae.cd.citibank.ae/CappWebAppAE/producttwo/capp/action/signoncq.do
hxxps://ibank.barclays.co.uk/olb/x/LoginMember.do
hxxps://ibank.barclays.co.uk/olb/x/LoginMember.do
hxxps://ibank.internationalbanking.barclays.com/logon/icebapplication*
hxxps://intelvia.cajamurcia.es/2043/entrada/01entradaencrip.htm
hxxps://internetbanking.aib.ie/hb1/roi/signon
hxxps://light.webmoney.ru/default.aspx
hxxps://light.webmoney.ru/default.aspx
hxxps://lot-port.bcs.ru/names.nsf?#ogin*
hxxps://montevia.elmonte.es/cgi-bin/INclient_2098*
hxxps://oi.cajamadrid.es/CajaMadrid/oi/pt_oi/Login/login
hxxps://oie.cajamadridempresas.es/CajaMadrid/oie/pt_oie/Login/login_oie_1
hxxps://olb2.nationet.com/MyAccounts/frame_MyAccounts_WP2.asp*
hxxps://olb2.nationet.com/signon/signon*
hxxps://online*.lloydstsb.co.uk/logon.ibc
hxxps://online.wamu.com/Servicing/Servicing.aspx?targetPage=AccountSummary
hxxps://online.wellsfargo.com/das/cgi-bin/session.cgi*
hxxps://online.wellsfargo.com/login*
hxxps://online.wellsfargo.com/signon*
hxxps://onlinebanking#.wachovia.com/myAccounts.aspx?referrer=authService
hxxps://onlinebanking.nationalcity.com/OLB/secure/AccountList.aspx
hxxps://onlinebanking.norisbank.de/norisbank/login.do?method=login*
hxxps://online-business.lloydstsb.co.uk/customer.ibc
hxxps://onlineeast#.bankofamerica.com/cgi-bin/ias/*/GotoWelcome
hxxps://online-offshore.lloydstsb.com/customer.ibc
hxxps://pastornetparticulares.bancopastor.es/SrPd*
hxxps://privati.internetbanking.bancaintesa.it/sm/login/IN/box_login.jsp
hxxps://probanking.procreditbank.bg/main/main.asp*
hxxps://resources.chase.com/MyAccounts.aspx
hxxps://scrigno.popso.it*
hxxps://web.da-us.citibank.com/*BS_Id=MemberHomepage*
hxxps://web.da-us.citibank.com/cgi-bin/citifi/portal/l/autherror.do*
hxxps://web.da-us.citibank.com/cgi-bin/citifi/portal/l/l.do
hxxps://web.secservizi.it/siteminderagent/forms/login.fcc
hxxps://welcome23.smile.co.uk/SmileWeb/start.do
hxxps://welcome27.co-operativebank.co.uk/CBIBSWeb/start.do
hxxps://www#.citizensbankonline.com/*/index-wait.jsp
hxxps://www#.XXXXXXXXXXXXXXXXXXXXXXXXXXXX (censored upon requested)
hxxps://www*.banking.first-direct.com/1/2/*
hxxps://www.53.com/servlet/efsonline/index.html*
hxxps://www.bancajaproximaempresas.com/ControlEmpresas*
hxxps://www.bancoherrero.com/es/*
hxxps://www.bbvanetoffice.com/local_bdno/login_bbvanetoffice.html
hxxps://www.bgnetplus.com/niloinet/login.jsp
hxxps://www.caixagirona.es/cgi-bin/INclient_2030*
hxxps://www.caixalaietana.es/cgi-bin/INclient_2042
hxxps://www.caixaontinyent.es/cgi-bin/INclient_2045
hxxps://www.caixatarragona.es/esp/sec_1/oficinacodigo.jsp
hxxps://www.cajabadajoz.es/cgi-bin/INclient_6010*
hxxps://www.cajacanarias.es/cgi-bin/INclient_6065
hxxps://www.cajacirculo.es/ISMC/Circulo/acceso.jsp
hxxps://www.cajadeavila.es/cgi-bin/INclient_6094
hxxps://www.caja-granada.es/cgi-bin/INclient_2031
hxxps://www.cajalaboral.com/home/acceso.asp
hxxps://www.cajasoldirecto.es/2106/*
hxxps://www.cajavital.es/Appserver/vitalnet*
hxxps://www.ccm.es/cgi-bin/INclient_6105
hxxps://www.citibank.de*
hxxps://www.clavenet.net/cgi-bin/INclient_7054
hxxps://www.dab-bank.com*
hxxps://www.ebank.hsbc.co.uk/main/IBLogon.jsp
hxxps://www.e-gold.com/acct/balance.asp*
hxxps://www.e-gold.com/acct/li.asp
hxxps://www.fibancmediolanum.es/BasePage.aspx*
hxxps://www.gbw2.it/cbl/jspPages/form_login_AV.jsp*
hxxps://www.gruposantander.es/bog/sbi*?ptns=acceso*
hxxps://www.gruppocarige.it/grps/vbank/jsp/login.jsp
hxxps://www.halifax-online.co.uk/_mem_bin/*
hxxps://www.halifax-online.co.uk/_mem_bin/formslogin.asp*
hxxps://www.halifax-online.co.uk/MyAccounts/MyAccounts.aspx*
hxxps://www.in-biz.it*
hxxps://www.isbank.com.tr/Internet/ControlLoader.aspx*
hxxps://www.isideonline.it/relaxbanking/sso.Login*
hxxps://www.iwbank.it/private/index_pub.jhtml*
hxxps://www.mybank.alliance-leicester.co.uk/login/*
hxxps://www.nwolb.com/Login.asp*
hxxps://www.nwolb.com/Login.aspx*
hxxps://www.paypal.com/*/webscr?cmd=_account
hxxps://www.paypal.com/*/webscr?cmd=_login-done*
hxxps://www.rbsdigital.com/Login.asp*
hxxps://www.sabadellatlantico.com/es/*
hxxps://www.suntrust.com/portal/server.pt*parentname=Login*
hxxps://www.unicaja.es/PortalServlet*
hxxps://www.uno-e.com/local_bdnt_unoe/Login_unoe2.html
hxxps://www.us.hsbc.com/*
hxxps://www.wellsfargo.com/*
hxxps://www2.bancopopular.es/AppBPE/servlet/servin*

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

0 件のコメント:

コメントを投稿