エフセキュアブログ

python を含む記事

10 PRINT “ソフトウェアエンジニア職に空きがあります”

20 GOTO 10

 エフセキュアでは人材を募集している!世界中で人材募集中だ。

 また、ATP(Advanced Threat Protection)プロジェクトを支援する複数のチームに多数のポストが空いている。一部のケースでは、複数の候補者を求めている役職もある。ATPは当社の中でも刺激的で、急激に成長をしているプロジェクトなので、募集を確認してほしい!

 当社ではまた、ラボの他のチームも拡張している。自身の新しい才能を探している2人の同僚に、シャウトアウトをささげたい。

Holo (left) shreds it up in our basement band practice space.
当社の地下のバンド練習場で速弾きしているAntti(左)。ベースは私(Andy Patel)だ

 Antti Holopaineは当社のクリーンソフトウェアへの取り組みを率いており、ソフトウェアエンジニアたちを探している。そこでは、合法的なファイルの収集と分析の自動化を推し進め、改善を行っている。仕事内容にはPythonで山ほど書いたり、サンプルおよびデータの分析を構築したりが含まれるが、普段は当社のバックエンドでたくさんの魔術を行っている。興味はあるだろうか?申し込みはこちらから

At the moment of writing, Janne was on the throne.
…王座に着くJanne

 Janne Laaksonenは当社のSecurity SDK部門の長である。この部門はWindowsのエンドポイント保護技術の設計および開発を担当している(いろいろやっている中でも)。その取り組みを支援するWindowsシステムプログラマーをJanneは求めている。Security SDK部門は、ラボにおけるあらゆる種類の非常に重要な作業を任されている。これには、当社のデータベースおよびコンポーネント更新のインフラ、実際のマルウェアに対する自動テストの構築、専門家向けのツールの提供、ラボや今後の見通しのためのメトリクスおよびサービスの可視化、Ultralight(当社の「クラウド」セントリックなクライアント)SDKの設計および開発が含まれる。この部門は専門家だらけで、採用されたら大いに学習する機会が得られる。申し込みはこちらから

 もしいずれかの仕事に関心があるなら、以下のフォームに一言記入して連絡をほしい。あなたの質問に答える我々のほうがずっと嬉しく思うだろう。


 疑問点は?

 (訳注:入力フォームは原文の記事へ)

APT攻撃を行うDukeグループの最新のツール:クラウドサービスとLinuxサポート

 ここ数週間で、Dukeグループのツールセットに2つの補強メンバーが登場したことが判明した。SeaDukeとCloudDukeだ。これらのうちSeaDukeはシンプルなトロイの木馬で、Pythonで書かれている点が興味深い。さらに不思議なことに、SeaDukeはWindowsとLinuxの両方を同時にサポートしている。我々が観察してきたDukeグループによるマルウェアとしては、初のクロスプラットフォームのマルウェアである。SeaDukeはクロスプラットフォームであるにも関わらず、単一のトロイの木馬だ。一方、CloudDukeはマルウェアコンポーネントの完全なツールセットのように見える。あるいは、Dukeグループが呼ぶように「ソリューション」なのだろう。これらのコンポーネントには、独自のローダーやダウンローダ、1つではなく2つの異なるトロイの木馬型のコンポーネントが含まれている。C&Cおよび盗んだデータを抜き出すための経路として、Dukeグループはクラウドストレージサービス、とりわけマイクロソフトのOneDriveを使用しているということをCloudDukeが雄弁に物語っている。最後に、CloudDukeの最近のスピアフィッシングキャンペーンの一部は、1年前からのCozyDukeのスピアフィッシングキャンペーンと酷似している。

クロスプラットフォームのマルウェアSeaDukeにLinuxサポートが追加

 先週、シマンテックおよびパロアルトネットワークスの両社はSeaDukeに関する研究内容を公開した。SeaDukeは、Dukeグループが使用するトロイの木馬の武器庫に新たに追加されたものである。これまでのDukeグループによるマルウェアは、常にCおよびC++言語の組み合わせだけでなくアセンブリ言語によっても書かれていた。一方、SeaDukeは珍しくPythonで書かれており、複数のレイヤに渡って難読化がなされている。こうしたPythonのコードは通常、py2exeやpyinstallerを用いてWindowsの実行形式にコンパイルする。しかし今回のPythonのコードは、WindowsとLinuxの双方で動作するように設計されている。それ故、我々が推測するところでは、DukeグループはLinuxユーザの標的に対しても同一のSeaDukeのPythonコードを使っている。DukeグループがLinuxプラットフォームを標的にしたマルウェアを採用したのを我々が目にしたのは、このときが初めてだ。

seaduke_crossplatform (39k image)
SeaDukeで見つかった、クロスプラットフォームサポートの例

マルウェアツールセットCloudDukeにおける新たなソリューション群

 先週、パロアルトネットワークス社およびカスペルスキー社は、各社がMiniDionisおよびCloudLookと呼んでいるマルウェアのコンポーネントについて、研究内容を公表した。MiniDionisおよびCloudLookは、ともに当社がCloudDukeと称するより大きなマルウェアツールセットのコンポーネントだ。このツールセットは、多岐に渡る機能を提供するマルウェアのコンポーネント群から構成される。さらに、共有コードフレームワークに部分的に依存し、常に同じローダーを用いている。当該サンプルの中で見つかったPDB文字列に基づくと、マルウェアの作者はCloudDukeのコンポーネントを「DropperSolution」「BastionSolution」「OneDriveSolution」などと「ソリューション(solution)」と呼んでいた。我々が観察したPDB文字列の一覧を以下に示す。

C:\DropperSolution\Droppers\Projects\Drop_v2\Release\Drop_v2.pdb
c:\BastionSolution\Shells\Projects\miniDionis4\miniDionis\obj\Release\miniDionis.pdb
c:\BastionSolution\Shells\Projects\miniDionis2\miniDionis\obj\Release\miniDionis.pdb
c:\OneDriveSolution\Shells\Projects\OneDrive2\OneDrive\obj\x64\Release\OneDrive.pdb

 我々が最初に観察したCloudDukeのコンポーネントは、内部的に「DropperSolution」と呼ばれているダウンローダである。ダウンローダの目的は、被害者のシステムにさらなるマルウェアをダウンロードして実行することだ。もっとも多く観察されたケースでは、当該ダウンローダは侵害されたWebサイトへの接続を試み、暗号化された悪意あるペイロードをダウンロードして、復号と実行を行う。ダウンローダの構成されていた状況によるが、一部の例ではまず手始めにマイクロソフトのクラウドストレージサービスOneDriveへログインし、そこからペイロードを取得することを試みる。OneDriveでペイロードが得られなければ、ダウンローダは侵害されたWebサイトからダウンロードするという、先に述べた方法へ逆戻りする。

 また、CloudDukeツールセット中に、2つの異なるトロイの木馬のコンポーネントが観察された。1つ目は内部的に「BastionSolution」と呼ばれており、パロアルトネットワークス社が同社の研究において「MiniDionis」としているトロイの木馬である。興味深いことに、BastionSolutionは機能的にはSeaDukeの完全なコピーのように見える。唯一の実質的な違いは、プログラミング言語の選択だけだ。BastionSolutionはまた、内部的に「Z」と呼ばれているらしいコードフレームワークをかなり使っている。このフレームワークは、暗号化、圧縮、ランダム化、ネットワーク通信などの機能を持つクラスを提供している。

bastion_z (12k image)
トロイの木馬BastionSolution内のクラスのリスト。「Z」フレームワーク由来の複数のクラスを含む

 暗号化やランダム化のクラスのように、同じ「Z」フレームワークに由来するクラスは、CloudDukeツールセットのもう1つのトロイの木馬型のコンポーネントでも使用されている。この2番目のコンポーネントは内部的には「OneDriveSolution」と呼ばれている。C&Cの経路としてマイクロソフト社のクラウドストレージサービスOneDriveに依存しているため、とりわけ興味深い。これを実現するため、OneDriveSolutionは事前に設定されたユーザ名とパスワードでOneDriveにログインを試みる。成功すると、続いて被害者のコンピュータからOneDriveのアカウントへデータのコピーを始める。また同時に、マルウェアが実行すべきコマンドが格納されたファイルをこのOneDriveのアカウントから探す。

onedrive_z (7k image)
トロイの木馬OneDriveSolution内のクラスのリスト。「Z」フレームワーク由来の複数のクラスを含む

 すべてのCloudDukeの「Solution」は同一のローダーを用いている。このローダーはあるコードの一部分となっているが、それは埋め込まれて暗号化された「Solution」を復号したり、メモリに読み込んで実行することが主目的であるコードだ。Dukeグループは自身のマルウェアのためにローダーをたびたび利用するが、以前彼らが使っていたローダーと異なり、CloudDukeのローダーはずっと融通が利く。最終的なペイロードの読み込みおよび実行に複数の方式をサポートしており、また追加的なマルウェアコンポーネントをディスクに書き込んで実行する機能があるのだ。

CloudDukeのスピアフィッシングキャンペーンと、CozyDukeにおける類似性

 CloudDukeはこのところスピアフィッシングメール経由で広がりを見せている。報告されているところでは、米国防衛省のような組織などが標的にされている。こうしたスピアフィッシングメールには侵害されたWebサイトへのリンクが含まれており、サイト上にはCloudDukeの実行ファイル群を含むzipファイルが置かれている。大半の場合、このような実行ファイルを実行することで、被害者のハードディスクに2つの新しいファイルが書き込まれることになる。両ファイルのうち1つ目は、音声ファイルやPDFファイルのような囮だ。一方でもう1つのファイルは、いわゆる「DropperSolution」というCloudDukeのダウンローダが埋め込まれた、CloudDukeのローダーである。こうしたケースでは、被害者には囮ファイルが提示され、バックグラウンドではダウンローダがCloudDukeのトロイの木馬である、「OneDriveSolution」または「BastionSolution」のいずれかのダウンロードへと進む。

decoy_ndi_small (63k image)
CloudDukeのスピアフィッシングキャンペーンで採用された囮ドキュメントの例。攻撃者がここからコピーしているのは明らかだ

 だが興味深いことに、当社でこの7月に観察した、CloudDukeの別のスピアフィッシングキャンペーンの一部は、2014年7月初めという、ほぼ1年前に見られたCozyDukeのスピアフィッシングキャンペーンに驚くほど似ている。これら双方のスピアフィッシングキャンペーンでは、囮のドキュメントはまったく同一のPDFファイル「US letter fax test page」である(28d29c702fdf3c16f27b33f3e32687dd82185e8b)。同様に、悪意のあるファイルが置かれたURLは、双方のキャンペーンにおいて、eFaxと関連があるようなものになっている。また興味深いことに、CozyDukeに触発されたCloudDukeのスピアフィッシングキャンペーンでは、メール内でリンクが張られた悪意のあるアーカイブのダウンロードと実行を行うと、CloudDukeのダウンローダの実行につながるわけではなく、「BastionSolution」が実行されるのだ。つまり、その他のCloudDukeスピアフィッシングキャンペーンのために記述された処理が、1ステップ飛ばされる。

decoy_fax (72k image)
CloudDukeおよびCozyDukeの双方のスピアフィッシングキャンペーンで採用された囮の「US letter fax test page」

検出回避のために、クラウドサービスがますます使用される

 Dukeグループが彼らの作戦の一部として、クラウドサービス全般やMicrosoft OneDriveを使ったのを、我々が目にしたのはCloudDukeが初めてというわけではない。今年の春頃、当社はCozyDukeの研究結果を公開 し、そこで次の点を述べた。すなわちCozyDukeは、盗んだデータをこっそり運び出すために時にOneDriveアカウントを直接的に用いたり、あるいはまた時には同じOneDriveアカウントから追加のコマンドを含むファイルを取得する。

 こうした以前のケースにおいて、Dukeグループは補助的なコミュニケーション手段としてOneDriveを使用するだけであり、依然として、動作の大半においてC&Cの経路を従来のものに頼っていた。そのため、実際のトロイの木馬をダウンロードしてコマンドを渡すところから、盗んだデータを最終的に持ち出すところまで、作戦の各ステップにおいてCloudDukeが本当にOneDriveのみに依存するようになったことは、興味深い。

 C&Cの経路としてOneDriveのようなサードパーティのWebサービスにのみ依存することによって、Dukeグループはよりうまく検出をかいくぐろうとしたのだと我々は考える。組織のネットワークから、未知のWebサーバへ大量のデータが転送されたら、いともたやすく疑いが生じる。しかし、人気のあるクラウドストレージサービスへデータを転送するのは普通のことだ。攻撃者が大量の盗んだデータを秘密裏に転送するのにより適した方法とは、人々が正規の理由で同じデータを日々転送するのと同じ方法である(たまたまだが、サードパーティのWebサービスがC&Cの経路として使用されることの影響を題材にした講演が、VirusBulletin 2015カンファレンスで行われる予定だ)。

限りある資源を、検出を回避し防衛側に先んじることへ回す

 多目的なマルウェアツールセットを1つ開発するのですら、細かいことを置いてくとして、時間と資源を要するものだ。したがって、異なるツールセット間でフレームワークをサポートするなど、コードの再利用を試みることは理に適っているように思える。しかしながら、SeaDukeとCloudDukeのコンポーネントBastionSolutionにおいて複数のプログラミング言語で同じコードを書き直したことによって、Dukeグループはさらにもう1歩進んだようだ。内部は似通ってはいるが、外部ではまったく違うように見える2つのマルウェアツールセットを提供することにより、時間と資源を節約できる明白な利点がある。これで一方のツールセットが発見されても、2つ目のツールセットの発見にただちに結び付くことはない。

 Dukeグループはロシアと結びつきあることが長い間疑われているが、異常に長い期間、また特に最近は異常な厚かましさで諜報活動を行っている。最近のCloudDukeやSeaDukeのキャンペーンは、Dukeグループが近いうちに活動終了するつもりはないという、明確な兆候のように見える。

 Research and post by Artturi (@lehtior2)

 エフセキュアはCloudDukeをTrojan:W32/CloudDuke.BまたはTrojan:W64/CloudDuke.Bとして検知する。

サンプル:

04299c0b549d4a46154e0a754dda2bc9e43dff76
2f53bfcd2016d506674d0a05852318f9e8188ee1
317bde14307d8777d613280546f47dd0ce54f95b
476099ea132bf16fa96a5f618cb44f87446e3b02
4800d67ea326e6d037198abd3d95f4ed59449313
52d44e936388b77a0afdb21b099cf83ed6cbaa6f
6a3c2ad9919ad09ef6cdffc80940286814a0aa2c
78fbdfa6ba2b1e3c8537be48d9efc0c47f417f3c
9f5b46ee0591d3f942ccaa9c950a8bff94aa7a0f
bfe26837da22f21451f0416aa9d241f98ff1c0f8
c16529dbc2987be3ac628b9b413106e5749999ed
cc15924d37e36060faa405e5fa8f6ca15a3cace2
dea6e89e36cf5a4a216e324983cc0b8f6c58eaa8
e33e6346da14931735e73f544949a57377c6b4a0
ed0cf362c0a9de96ce49c841aa55997b4777b326
f54f4e46f5f933a96650ca5123a4c41e115a9f61
f97c5e8d018207b1d546501fe2036adfbf774cfd

C&Cに使われている、侵害されたサーバ:

hxxps://cognimuse.cs.ntua.gr/search.php
hxxps://portal.sbn.co.th/rss.php
hxxps://97.75.120.45/news/archive.php
hxxps://portal.sbn.co.th/rss.php
hxxps://58.80.109.59/plugins/search.php

CloudDukeを置くために使われている、侵害されたWebサイト:

hxxp://flockfilmseries.com/eFax/incoming/5442.ZIP
hxxp://www.recordsmanagementservices.com/eFax/incoming/150721/5442.ZIP
hxxp://files.counseling.org/eFax/incoming/150721/5442.ZIP

ドキュメントにないLNKの機能に隠れるJanicab

 2年前、我々はJanicabというマルウェアを発見した。MacとWindowsを標的としており、それぞれPythonとVBSスクリプトを使用している。

 このマルウェアは、Windows OSではCVE-2012-0158を悪用したドキュメント経由で配信される。さらに2013年あたりから近頃まで、埋め込まれたエンコード済みのVBScriptをドロップする、Microsoft Shell Linkファイル(.lnk)の形式での配信も目にしている。

 目的を分かりにくくするため、このドロッパーが用いるトリックはいくつかある。

 - 拡張子を二重にしたファイル名(例:.jpg.lnk や .doc.lnk)
 - (デフォルトのcmd.exeの代わりに)notepad.exeのアイコンを使用
 - センシティブな可能性のあるデータ、たとえばマシンIDや相対パスなどはゼロで潰す

 しかしもっとも興味深いのは、コマンドライン引数の文字列をWindowsエクスプローラーから隠ぺいするために、ドキュメントにない方法を使っている点だ。一般的にWindowsエクスプローラーでは、ショートカットアイコンを右クリックすることで、プロパティの中でリンク先とその引数を一つの文字列として見ることができる。だが、今回のシナリオではコマンドラインの引数が見えないのだ。

1_Fotomama_screenshot (34k image)

 一連のシェルコマンドを&演算子で結合したものが、隠されたコマンドライン引数としてLNK内に存在している。

2_Fotomama_lnk (52k image)

 以下は、悪意あるVBEのドロップと実行を行う実質的な部分のコマンドのリストだ。

3_commands (34k image)

 このマルウェアスクリプトはMicrosoft Script Encoderを用いてエンコードされており、LNKファイルの末尾に埋め込まれている。

 実行すると、このスクリプトは以下のような囮のファイルをドロップする。

4_mama (68k image)

5_doc (555k image)

 Janicabは以前のバリアントと同様、C&Cサーバを取得するために、YouTubeなどサードパーティーのWebサービスをいまだに利用している。

6_youtubecomments (30k image)

7_blogspot (8k image)

8_googleplus (14k image)

 実際のC&CサーバのIPアドレスは、YouTube上で示されていた。しかし上図のように、マルウェア作者はC&Cサーバを分かりづらくしようとしてきた。最近のバリアントでは「our (.*)th psy anniversary」という形式のコメント内にある数値を収集する。

 実際のIPアドレスを得るには、当該Webサービスで見つけた数値を分割したり変換したりする。

9_ipconv (54k image)

 このバリアントで見つかったもう1つの変更点は、%UserProfile$\SystemFoldersnapIt.exeをドロップするところだ。このアプリケーションはスクリーンショットをキャプチャし、~PF214C.tmpとして保存するためにJanicabが使用している。

 また今では、自身がVirtualBox、Parallels、VMWareといった仮想マシン内で実行されている形跡があるか確認も行っている。同様に、以下のような実行中のプロセスを調べることにより、分析用のマシン上で実行されているかどうか確認している。

10_processes (77k image)

 今回のバリアントで、これまでに見つけたC&Cサーバの一覧は以下になる。
 • 87.121.52.69
 • 87.121.52.62
 • 94.156.77.182
 • 95.211.168.10

 C&Cサーバとの通信フォーマットは次のとおりだ。
 • [C&C]/Status2.php - C&Cサーバのステータスを確認
 • [C&C]/a.php?id=[SerialIDfromCnC]&v=[malware_version]&av=[InstalledAV] - cookieおよび囮ファイルが削除されたことを通知
 • [C&C]/gid.php?action=add&cn=[ComputerName]&un=[UserName]&v=[malware_version]&av=[InstalledAV]&an=[notifyName] - Serial IDを取得
 • [C&C]/rit.php?cn=[ComputerName]&un=[UserName]&an=[notifyName]&id=[SerialIDfromCnC]&r=[VMorRunningProcessName] - 分析用の実行中プロセスもしくはサンドボックス環境を通知
 • [C&C]/sm.php?data=[InstalledAV] - 起動メカニズムを取得
 • [C&C]/c.php?id=[SerialIDfromCnC] - コマンド群を取得
 • [C&C]/rs.php - スクリーンショットを送信
 • [C&C]/rk.php - データを送信
 • [C&C]/d.php?f=[Base64EncodedData] - ファイルをダウンロード

 このサンプルはTrojan-Dropper:W32/Janicab.Aとして検知される。

 SHA1のハッシュ
 • 4bcb488a5911c136a2c88835aa06c01dceadbd93
 • 41688ef447f832aa13fad2528c3f98f469014d13



 Post by — Jarkko and Karmina

ランサムウェア・レース(パート5):守られないSynoLockerの約束

 決してオンライン犯罪者に身代金を支払ってはならないと、我々は考えている。その理由は極めて単純だ。ファイルを暗号化するランサムウェアは、支払いが為されるまで被害者の個人的なファイルを「人質」にとる。この陰謀がうまくいくには、耳をそろえて払うことで救われると被害者が信じる必要がある。しかしながら、犯罪者たちに支払った結果として確実なのは、彼らの悪意に満ちた行為を続けさせるように促すことだけだ。代表例は、一般にSynoLockerとして知られる最近のランサムウェアファミリーだ。

SynoLockerはシノロジー社製のNAS(network attached storage)デバイスを標的にしている。デバイスがSynoLockerに感染すると、このマルウェアはデバイスに格納されたファイルの暗号化を始める。さらに、ファイルを復号する見返りに身代金の支払いを要求するメッセージを被害者に提示する。しかしながら、SynoLockerの背後にいる犯罪者らはうその約束をしているのだ。 当社で観察した数多くのケースにて、復号プロセスは実際には動作しなかったり、犯罪者らが提供した復号キーが間違っていたりした。

 犯罪者たちに騙されたとしても、望みが完全に潰えたわけではない。正しい復号キーを被害者が入手することができれば、ファイル群はまだ復号できる。この目的のために、当社は本日、小さなツールをリリースする。Pythonのスクリプトで、当社で書いたものだ。正しい復号キーが提供されている限り、このツールを使って安全にSynoLockerで暗号化されたファイルを復号できる。このツールは、決してSynoLockerで作成されたファイルの暗号を破るものではない。また、復号キーを総当たりで探すことはしない。復号キーが既知の場合にのみ動作する。

Screenshot of encrypted and decrypted file headers
SynoLockerで暗号化されたファイルの先頭部分(左)と復号された同じファイルの先頭部分(右)

 当社の復号ツールのもう1つの使用場面は、ユーザが身代金を払ったが、感染したデバイスからマルウェアSynoLockerを削除済みだったために、復号キーが使えなくなった状況だ。デバイスを当該マルウェアに再感染させる(これは悪い考えだ)代わりに、当社のスクリプトをキーと共に使って、ファイルを復号できる。

 このツールを一般社会に公開することにより、こうした犯罪者によって引き起こされる害悪を解消するのに貢献できることを願っている。

 当社はどなたにも身代金の支払いを一切お勧めすることはない。

 当社の復号ツール、インストールおよび使用マニュアルはこちらから

 Post by Artturi (@lehtior2)

ファイルサイズだけで悪性文書ファイルを検出するツールをリリース

残念ながら私はコードブルーに出席できず、しょんぼりしながらタイムテーブルを眺めていたら、興味深い発表が目に留まりました。
ファイルサイズだけで悪性文書ファイルを見ぬくことができることが判明した
http://www.codeblue.jp/speaker.htmlより引用

ファイルサイズだけで、というのはすごいですね。
後ほどソフトは公開されるそうですが、待ちきれなかったので自分で実装してみました。
user@local:~/Product$ cat f-checker.py
#!/usr/bin/python
import os, sys
print "malicious" if os.path.getsize(sys.argv[1]) % 512 else "benign"

使い方は簡単で、次のように検知対象ファイルを指定するだけです。ちなみに指定しているのはRed Octoberという日本も標的となったスパイ活動で使用されたファイルです。
user@local:~/Product$ python f-checker.py 'WORK PLAN (APRIL-JUNE 2011).xls'
benign

それでは検知率を調べてみましょう。エフセキュアブログではミッコや他のエンジニアがマルウェアのハッシュ値を公開してくれていますので、その中から検査対象をリストアップすることにします。ファイルサイズに着目する方法はPDFや最近よくマルウェアに使われるdocx形式のファイルに対しては効果がありませんので、今回はdoc、xls、pptファイルだけに絞ってリストアップします。合計で12個のマルウェアが見つかりました。エフセキュアブログでフォーカスされるだけあって、悪質な標的型攻撃で使われたマルウェアばかりです。

検知率は次のとおりになりました。
f-checker75%
T社AV92%
S社AV92%
M社AV100%

私のツールはまだまだ改善の余地がありそうです。

検知対象としたファイルのハッシュ値:
0c1733b4add4e053ea58d6fb547c8759
362d2011c222ae17f801e3c79e099ca7
3c740451ef1ea89e9f943e3760b37d3b
4031049fe402e8ba587583c08a25221a
46d0edc0a11ed88c0a39bc2118b3c4e071413a4b
4bb64c1da2f73da11f331a96d55d63e2
51bb2d536f07341e3131d070dd73f2c669dae78e
7ca4ab177f480503653702b33366111f
8f51b0e60d4d4764c480af5ec3a9ca19
97a3d097c686b5348084f5b4df8396ce
d8aefd8e3c96a56123cd5f07192b7369
ee84c5d626bf8450782f24fd7d2f3ae6

人材募集:すぐに応募を、特典多数

 今日、私は2階の窓から外を眺め、Pekka Usvaが小さな簡易会議スペースでランチを取っているのを見つけた。

Pekka Usva, rear window

 そして、それで思い出した…。

 先週(自宅にいて、気管支炎を治そうとしているときに)Pekkaのメールを読んだのだった。エフセキュアは人材募集中なのだ。

 現在、ヘルシンキで以下の2つの開発者のポストを公募している。
 
  •  ソフトウェアエンジニア
  •  上級ソフトウェアエンジニア(サーバサイド、Python)

 先週はUXデザイナーの募集もあった。そしておそらく、今後はもっと多くのポストがあるだろう。

 Pekkaが多数の雇用を行うことで、当社の企業セキュリティビジネス分野の目標である、SMB向けのクラウドセキュリティの開発が回る(コンシューマ向けに最近行われた多数の提案を1つのSMB製品に結び付けている)。

 younitedや、Freedome、モバイルデバイス管理を完全に再設計したUXで結びつける?大勢の人が非常に忙しくならざるを得ないだろう…。

 以下がPekkaの「エグゼクティブ」ランチでも驚きはない。

Pekka Usva, up close

 実際、私は会社の外でPekkaと交流があるが、彼は当社の多くの管理者同様かなりいい人間だ。Jussi(写真のフレームの外)とミーティングしながらのビジネスランチでなかったのなら、Pekkaは会社の売店のすぐ脇にいただろう。

 これがいちフィンランド企業での生活だ。(一緒にやろう!)

 では。
 Sean

DODAからの挑戦状に隠された画像

先月まで「DODAからの挑戦状」という企画でハッキング問題を掲載しておりました。(現在、企画は終了しており、こちらに解答を掲載しています。)

DODAChallengeFromWired

初級、中級、上級と全部で3部構成の問題となっており、最後の上級問題の正答率を1%にしてほしいという要望をいただいておりました。過去のCTF参戦の経験から考えても難易度の調整は難しいものでして、「DODAからの挑戦状」の裏で、個人的に「1%への挑戦」がありました。

最終的には、初級問題の正答者数(アクセス数)が8232でした。これはユニークを取っていない数字なのですが、ユニークを取ると半分くらいの4000名くらいになるでしょうか。
4000名の1%だと40名になりますが、実際に上級問題を正解した方は32名でしたので、難易度の設定はうまくいったと思います。

さて、この挑戦状は普段からデコンパイルに慣れ親しんでいる方には退屈に思われるかもしれないので、上級問題の後に超上級問題として追加で一問隠しておきました。

ここではその解法を紹介します。
続きを読む

RLOのトリックを使ったMacの署名済みマルウェア

 RLO(Right-to-left override)とは、双方向のテキストエンコードシステムで使われる特殊文字で、テキストを右から左への表示に切り替える場所を指示するものだ。実行可能ファイルの本当の拡張子を隠蔽する目的で、昨年来Bredolabや高度なトロイの木馬MahdiといったWindowsマルウェアで一般的に使われている。トリックの詳細については、Krebs on Securityのこの投稿を確認してほしい。

 我々はあるMac用のマルウェアがRLOのトリックを用いていることに気付いた。そして先週の金曜日にVirusTotalに投稿した。

RLO character

 ここでの目的は、Krebの投稿で触れられていたものほど複雑ではない。単純に本当の拡張子を隠蔽するだけだ。このマルウェアでは「Recent News.pdf.app」というファイル名を使えたはずだった。しかし、OS Xはすでにこの点を考慮しており、予防措置として実際の拡張子を表示している。

RLO trick in Finder
RLO trick in Terminal

 このマルウェアはPythonで記述され、配布にpy2appを使用している。Hackbackとまったく同様に、Apple社のDeveloper IDで署名されている。

Apple Developer ID

 しかし、OS X上の通常のファイル検疫時に示される通知が、RLO文字のせいでKrebの場合と同様に逆さまになっている。.

OS X file quarantine notification

 このマルウェアを実行するとデコイのドキュメントを置いて、開く。

Decoy document

 続いてマルウェアは起動のためのcronジョブを作成し、さらに感染したユーザのホームディレクトリに、コンポーネント群を格納するための隠しフォルダを作る。

Launch point and drop files

 マルウェアはC&Cサーバのアドレスを取得するため、以下のWebページへ接続する。

  •  http://www.youtube.com/watch?v=DZZ3tTTBiTs
  •  http://www.youtube.com/watch?v=ky4M9kxUM7Y
  •  http://hjdullink.nl/images/re.php

 「just something i made up for fun, check out my website at (address) bye bye(楽しみのためにあるものを作った。私の(アドレス)のWebサイトを確認してね。バイバイ)」という文字列を解析してアドレスを得る。

 YouTubeのページは以下のようになっている。

YouTube page

 この文字列をGoogleで検索すると、上で挙げたもの以外にも悪用しているサイトがあることが分かる。

Google search

 その後マルウェアは継続的にスクリーンショットを撮り、音声を録音し(SoXというサードパーティ製のソフトウェアを使用している)、それをC&Cサーバにアップロードする。また、C&Cサーバに対して、実行コマンドの継続的なポーリングも行っている。

 このマルウェアは、当社ではBackdoor:Python/Janicab.Aとして検出する。

 追記:

 C&Cサーバの場所を示すために使われているYouTubeの動画の1つの統計情報を以下に示す。

Python_Janicab_YouTube_stats

Python_Janicab_YouTube_stats_daily

 この動画の日付はJanicab.Aのバイナリの日付よりも少なくとも1ヶ月前にさかのぼる。統計情報に基づくと、実際にはもっと前からバリアントが存在したようだ。

Python™を商標登録する??

 「Python」という単語を「ソフトウェア、サーバ、サービスなどコンピュータ関連のことの大半」として商標登録しようとしているイギリスの企業のことで、Python Software Foundationに助けが必要なようだ。

 そこで、ここに我々の意見をはっきりと述べておく。

F-Secure Labs hearts Python

 エフセキュアにいる我々は、組織内部で広範にPythonを使用している。主にバックエンドや内部ツール用だが、当社の研究開発作業の中では随所で使われている。そして全開発者にPythonを採用するように推奨している(ありそうにないことだが、まだPython信者になっていないケースにおいて)。我々の知る限り、一般に当社は次のような点においてヨーロッパの技術産業を代表する企業である。非常に特化したニッチな企業を別にすれば、全員がPythonを使っており、またプログラミング言語Pythonの知的所有権の法的な所有者以外に、この商標登録を許諾するのはばかげた、 無法な、 正気を失った、 不当なことだと考えている。

 では。

NftL

Ransomcrypt復号化スクリプト

  先週、文書、画像、ビデオなどを暗号化し、ファイルを人質に50ユーロ要求する、「Trojan:W32/Ransomcrypt」という名のランサム型トロイの木馬について書いた

CRYPTED!

  Ransomcryptは、Tiny Encryption Algorithm(TEA)を使用してファイルを暗号化する。キーは「ファイル固有キー」を作成するために暗号化されているファイル名の先頭の文字に基づいて変更される、「ベースキー」から作成される。ベースキーもファイル固有キーも、どちらも16バイト長だ。

  エフセキュアのアナリストが、サポートチームのために、Pythonで書かれた復号化スクリプトを作成した。幸いなことに、我々が遭遇した顧客の事例は少数だった。この復号化スクリプトはRansomcryptの2つの亜種で機能する。

  •  Trojan:W32/RansomCrypt.A, SHA1: b8f60c64c70f03c263bf9e9261aa157a73864aaf
  •  Trojan:W32/RansomCrypt.B, SHA1: 1e41e641e54bb6fb26b5706e39b90c93165bcb0b

fs_randec.zip

  EULTはここで読める。

  ダウンロード:fs_randec.zip, SHA1: 9ab467572691f9b6525cc8f76925757a543a95d8

  最初に、暗号化ファイルのコピーにこのスクリプトを使用するようにという指示には、特に注意して欲しい。

  「オリジナル」に使用しないこと。

Androidマルウェアが電子透かしを使用? それほどでも…

  私がいつものようにAndroidマルウェア分析を行っている際、特定のサンプルのクラス・モジュールにざっと目を通していると、以下のようなコードを見つけた。

fig1_finding_tEXT_chunk (4k image)
図1




  昨年後半、私はPortable Network Graphics(PNG)画像フォーマット、特にテキスト情報を持つフィールドについて、より詳細にチェックしていた。コードを見ていると、なぜこのアプリケーションはPNGファイルの「tEXt」チャンクが存在しているかどうか、チェックする必要があるのかということについて、すぐに疑念が生じた。

  私はコードに目を通し続け、この特定コードが画像ファイルを特定するため、どこでコールされるかを発見した。

fig2_method_checking_tEXT (85k image)
図2



  同コードのこの部分は、画像ファイルがリソース名「icon.png」を使用し、アプリケーションとバンドルされていることを示している。それからこの画像は開かれ、PNGチャンク(図1)をチェックするコードがコールされる方法へと送られる。

  APKパッケージのリソースを検査することで、似たような名称の3つのファイルが現れる。これはtEXtチャンクの初回の発生にしか興味を持っていないため、私はただちにHEXビューワを取り出し、全ファイルの最初のtEXtチャンクを調べた。これらは皆、特定のチャンク用に同一のバイナリデータを含んでいた。以下は、この画像の内部表示と、HEXビューワでレンダリングの際にどう見えるかを示している。

fig3_tEXT_chunk_marker (161k image)
図3



  この画像は、アプリケーションのアイコンとしても使用されている。よって、デバイスへのインストール中もインストール後も、非常に良く目にする。

fig4_app_icon (139k image)
図4



  現時点で、図3のデータは私にはほとんど意味が無いが、tEXtチャンクがバイナリデータ、もしくは読めないストリングを持つのは普通ではない。そこで図1の残りのコードの分析を続けた。更に分析して分かったのは、これが図3の隠されたデータを読み、ハードコードされたtext stream(「キー」)に対してビットごとのXOR演算を、どのバイト読み出しでも実施することだ。

fig5_hidden_data_decryption (39k image)
図5



  私はPython派なので、図3から隠れた情報をデコードするため、以下のような小さなスクリプトを作成した。このアルゴリズムは、図5のコードで分かったことに基づいている。スクリプト(図6.a)を実行した後、驚いたことに、読み取り可能な英単語と数がいくつかあった!

  これらのプレーンテキスト情報が、アプリケーションに対して何を意味するのかは、依然としてハッキリしないが、現時点で、こえららのデータ(図6.b)をPNGファイル(図3)のtEXtチャンクデータから隠すため、電子透かしを使用していることが分かった。しかし、電子透かしの厳密な定義を見ると、このサンプルが本当に電子透かし的であると考えられるのかどうかは、議論の余地がある。PNGファイルのチャンクの一つで、エンコードされたデータのシンプルな埋め込みに過ぎないからだ。

fig6_decrypt_hidden_data(79k image)
図6



  図5の残りのコードの分析を続けると、これら隠された情報(部分的なスクリーンショットは以下の通り)が、アプリケーションの主要な動機(すなわち有料番号にSMSを送信するということ)をサポートするために使用されているという事実がさらに強固となった。

fig7_hidden_info_screenshot (125k image)
図7



  上のコードを発見したほか、SMSの送信オペレーションのため、これら情報を実際に使用していることを確かめるため、Androidデバイスエミュレータでアプリケーションの実行も行った。そしてここでは、送出されるSMSイベントが記録され、図6.bのデコードされたデータとよく似た詳細が得られた。このイベントは、私が新たにインストールされたアプリケーションのメインUIから、「Next」ボタンをヒットした途端に起こった。

fig8_outgoing_sms_event (65k image)
図8



  このアプリケーションのsha1は「ac118892190417c39a9ccbc81ce740cf4777fde1」で、「Trojan:Android/FakeRegSMS.B」として検出される。


Threat Solutions post by ? Jessie

----

2012年1月30日:電子透かしについてさらに詳述するため、タイトルとテキストに修正を加えて更新した。

「Trojan:Android/FakeNotify」がアップデート

  今月はじめに我々は有料課金型のSMSトロイの木馬に関する記事を掲載した。「Trojan:Android/FakeNotify.A」として検出したものだ。現在、同トロイの木馬がアップデートされ、分析と検出をより厄介にする変更が加えられていることが分かっている。

  署名証明書から分かるように、新バージョンは同じ開発者が作成したものだ。トロイの木馬の全体的なふるまいに変更は無いが、コーディングアプローチはかなり変わっており、静的解析ツールなどを失敗させるのに十分だ。

  例えば分析中、私はオリジナルと現行バージョン双方からのSMS送信ルーチンを比較したが、以前のよりシンプルなコーディングアプローチがよりダイナミックになっていることに気づいた。

  「FakeNotify」のオリジナルバージョンでは、ルーチンはそれが何であるか、非常に簡単に「読む」ことができる単純な方法で実装されていた:

FakeNotify, original send
FakeNotify.A

  しかし新バージョンは、アナリストがコードを「読む」ことをより難しくするとともに、同じ目標を達成するためにJava言語のReflection/Dynamic Invocation機能を利用している。

  開発者たちは、自身のエンコーディング/デコーディングアルゴリズムを使用して、ストリング引数を混乱させることによりさらに歩を進めている(これはシンプルな換字式的な暗号に過ぎないが)。以下でコード化されたフォームを見ることができる:

FakeNotify, update encoded
FakeNotify.B, SHA1: df866cf4312cf9c929a9a7dc384eebb19d2b2c2d

  コーディングアプローチの変更は、大部分の静的解析ツールを容易に無効化することができる。

覚書:分析中、私は突然、Windows LoadLibraryとGetProcAddress combo API関数およびJava Reflectionのいくつかの機能との類似点に気づいた。他のAPI関数アドレス(Windows)およびクラス、もしくはObject handleのメソッド(Java)に関しては、双方とも開発者が最近獲得した方法もしくは関数をコールするか、実行することを可能にする。

  いずれにせよ、Androidの世界に戻ろう。新たなFakeNotifyバージョンの分析を容易にするため、私はシンプルなPythonスクリプトを作成し、難読化されたストリングのインスタンスを、悪意あるアプリケーションでデコンパイルされているJavaソース全ての平文ものと入れ替えた。

  パッチングの後、SMS送信ルーチンはclass SmsManagerとそのgetDefault method/functionのハンドリングを獲得し、その後、SmsManager classのsendTextMessageファンクションを使用するため、起動/コールされるか、適切に初期化される必要がある:

FakeNotify, update decoded

  確かに、私がAndroidマルウェアによりJava Reflection機能が使用されるのを見たのは、これが初めてではないし、ストリングの難読化は複雑ではない。しかしこれはAndroidマルウェアの開発者が自分達の「製品」を最新にし、検出されないようにするため、その技術を次々と適応させ、アップグレードする方法のかなり明快な例と言える。

Threat Solutions post by — Jessie

雪は無い!

  我々は先頃、北米で最大のブロードバンドオペレータの1つで重要なプロジェクトを開始した。

  そのため、エフセキュアでは新たに多くの人々を雇用している。

  我々はアーキテクト、デベロッパ、テスタ、およびスクラムマスターを必要としており、Python、C、SQL、Linux、高可用性、スケーラビリティ、オートメーション、ネットワーキングの専門知識を求めている。

  リロケーションパッケージも提供する。それにヘルシンキは美しいところだ!

  以下はオフィスのサウナバルコニーから撮影したばかりの写真だ:

Helsinki, heavily photoshopped to remove all the snow

  ほら、雪は無いでしょう? 今夜は実に美しい夕暮れが見られると思う。22時27分に。ご一緒しませんか?

  アプリケーションはリクルートページで受け付け中だ。

リバースエンジニアリング本

オライリージャパン宮川様より「リバースエンジニアリング――Python によるバイナリ解析技法」を献本いただきました。本書はGray Hat Python(Justin Seitz著)の日本語版で、DebuggerやFuzzerなどの基本原理や構築方法がPythonのサンプルコードとともに解説されています。技術監修はラック社の中津留さんです。
本ブログの読者の方々、特にリバースエンジニアリングに少しでも興味のある方は、まさに本書の対象読者でしょう。以下目次です。いかがでしょう?ちょっと読みたくなってきませんか?

1章 開発環境のセットアップ
2章 デバッガの基本原理
3章 Windowsデバッガの構築
4章 PyDbg―ピュアPythonのWindowsデバッガ
5章 Immunity Debugger―両方の世界をまたにかけ
6章 フック
7章 DLLインジェクションとコードインジェクション
8章 ファジング
9章 Sulley
10章 Windowsドライバのファジング
11章 IDAPython―IDA Proでのスクリプティング
12章 PyEmu―スクリプティング対応のエミュレータ

本書は/ART/OF/REVERSINGシリーズ3部作の第一弾で、第二弾は来月2日発売予定の「デコンパイリングJava――逆解析技術とコードの難読化」です。そして第三弾は今秋発売予定の新井悠、岩村誠、川古谷裕平、青木一史、星澤裕二による「アナライジング・マルウェア――フリーツールを使った感染事案対処(仮)」です。そうです、筆者も執筆陣に加えていただいております。というわけで、ただ今鋭意執筆中。
バックナンバー
セキュリティ関連リンク
セキュリティ機関

政府関連

セキュリティ関連団体

研究機関・大学
詳細カテゴリ
メディア関係者の皆様へ
エフセキュアブログメンバー
エフセキュアブログメンバー
ミッコ・ヒッポネン
エフセキュア CRO(セキュリティ研究所主席研究員)(ヘルシンキ)
(Twitterアカウント)
(研究所Twitter)
ショーン・サリバン
エフセキュア セキュリティ・アドバイザー(ヘルシンキ)
(Twitterアカウント)
高間 剛典
メタ・アソシエイツ代表
(公式ブログ)
(Twitterアカウント)
星澤 裕二
株式会社セキュアブレイン 最高技術責任者
(公式ブログ)
(人物紹介)
岩井 博樹
デロイト トーマツ リスクサービス株式会社 (〜2013年3月 株式会社ラック) 情報セキュリティ大学院大学 客員研究員
(Twitterアカウント)

(人物紹介)
福森 大喜
株式会社サイバーディフェンス研究所 上級分析官
CDI-CIRTメンバー
(人物紹介)
鵜飼 裕司
株式会社FFRI 代表取締役社長
(人物紹介)
福本 佳成
楽天株式会社
執行役員
OWASP Japan
アドバイザリーボード
Rakuten-CERT representative
(人物紹介)
神田 貴雅
エフセキュア株式会社 プロダクトグループ 部長
富安 洋介
エフセキュア株式会社 プロダクトグループ
コーポレートセールスチーム
エフセキュア株式会社
(エフセキュアブログ公式Twitterアカウント)

海外記事翻訳
株式会社イメージズ・アンド・ワーズ
エフセキュアメールマガジン

ブログに載らないメルマガ限定情報や、技術者インタビュー、製品情報、技術解説を掲載して毎月一回配信します。アドレスのみの登録で購読無料。

エフセキュアブログQRコード
QRコード