解析メモ

マルウェア解析してみたり解析に役に立ちそうと思ったことをメモする場所。このサイトはGoogle Analyticsを利用しています。

Vulnhub - DerpNStink: 1 Walkthrough

  • はじめに
  • 詳細
  • まとめ
    • ワークフロー
    • 攻撃のポイント
    • 防御のポイント

 

はじめに

今回選んだのは DerpNStink: 1。難易度は前回同様 Beginner ですが、今回は boot2root かつフラグを 4 つ獲得するのが目的です。OVA ファイルで提供されているのでインポートが楽です。

 

DerpNStink: 1
・Type: boot2root
・Level: Beginner
・URL: https://www.vulnhub.com/entry/derpnstink-1,221/

続きを読む

Vulnhub - Toppo: 1 Walkthrough

  • はじめに
  •  詳細
  • まとめ
    • ワークフロー
    • 攻撃のポイント
    • 防御のポイント

 

はじめに

今回取り組んだのは Toppo: 1 。前回同様、難易度が Beginner のものから選びました。この VM に対して Kali から侵入してフラグを探します。配布されているのは vmdk ファイルのみで ova や vmx などなく、ダウンロードページには OS が Linux とだけ。アーキテクチャ (64bit/32bit) が不明でしたが、適当に 32bit の VM として VirtualBoxVM を作成しました。IP address は DHCP です。

 

Toppo: 1
・Type: CTF Challenge
・Level: Beginner
・URL: https://www.vulnhub.com/entry/toppo-1,245/

続きを読む

Vulnhub - Lampião: 1 Walkthrough

  • はじめに
  • 詳細
  • まとめ
    • ワークフロー
    • 攻撃のポイント
    • 防御するなら

  

はじめに

最近は Vulnhub で追加された VM を利用してペンテストの練習を行っています。週末に取り組んだのは以下の VM です。この VM に対して外部のマシン (Kali) からスキャンや攻撃を行い侵入して、最終的に Flag を取れれば OK です。
※ IP address は DHCP が期待されているので、前回投稿の「VirtualBox の「内部ネットワーク」で DHCP サーバを使う」を使って IP address を割り当てています。

Lampião: 1
・Type: CTF Challenge
・Level: Easy
・URL: https://www.vulnhub.com/entry/lampiao-1,249/

続きを読む

VirtualBox の「内部ネットワーク」で DHCP サーバを使う

サマリ

メモリ節約のためゲストはなるべく立ち上げたくない。

VirtualBox の機能としての DHCP サーバを使う。

vboxmanager dhcpserver add を使う。

はじめに

最近、vulunhub で取ってきた VM を使ってペンテストの練習をしようかな、と思い立ったりしています。けどここで公開されている VM は基本的には DHCP で IP アドレスが割り当てられます。普段の解析では、外部からの接続ができないネットワーク―つまり VirtualBox でいうところの「内部ネットワーク」に固定 IP アドレスを割り当てる形で行っているので、このペンテストも「内部ネットワーク」でやりたい。DHCP サーバを立てれば良いのですが、ホストのメモリが貧弱なのでなるべく立ち上げるゲストは少なくしたい。調べてみると、VirtualBox の内部ネットワークに VirtualBox が提供する機能として DHCP サーバ機能が追加できるようなので試してみました。

やったこと

VirtualBox にはインストールフォルダに VBoxManager.exe というファイルがあり、基本的に VirtualBoxGUI で設定できることはすべてこの VBoxManager.exe からでもコマンドラインでできる模様。いま、VirtualBox には内部ネットワークとして「hatena」という名前のネットワークがあるとします。

f:id:k1z3:20180721001908p:plain

このネットワークに DHCP サーバ機能を割り当てます。まずはコマンドの確認。

f:id:k1z3:20180721000003p:plain

以下のように割り当てたいとします。

 

コマンドは以下のようになると思います。

 

VBoxManager.exe dhcpserver add --netname intnet --ip 123.45.6.254 --netmask  255.255.255.0 --lowerip 123.45.6.7 --upperip 123.45.6.89 --enable

 

以下は、同じネットワークに置いた Kali から netdiscovery コマンドでほかのホストを確認した結果です。(キャプチャは実際の環境。設定が違うので IP アドレスが 123.45.6.0/24 で表示されていません。)

f:id:k1z3:20180721001350p:plain

ローカルプロキシで広告とか遮断した話

サマリ

  • スマホの通信量が鰻登り
  • ローカルプロキシになるアプリを導入
  • 通信量が大幅に減った
  • いらない広告とか遮断してくれてる

きっかけ

最近、スマホの通信量が鰻登りで困っています。とくに帰宅時(午後)の移動時間の通信がなぜか妙に多くなります。そうすると、どこに通信が出ているのか、無駄な通信はないのか知りたくなります。

会社でインターネットに接続するときは、通常はプロキシサーバを経由してアクセスしているはずです。業務に関係のないサイトは「遮断」してくれるので、スマホの通信でも同じことできないかな、と考えてみました。

ローカルプロキシを立ててみる

ローカルにプロキシサーバ立てて、そこ経由で通信させれば、どこと通信しているかログが取れるかななんて考えてみたり。ついでに不要な広告とかは遮断してしまえば余計な通信発生しないな、とも考えてみたり。

 

f:id:k1z3:20180618234003p:plain

こうなっているのを...

 

f:id:k1z3:20180618235511p:plain

こうしたい。

で、探してみたら国産のアプリがあったので導入してみました。

 ※ このアプリは最終更新がちょっと古いです。気になる人は他のアプリ探したほうがいいです。

 

この手のアプリはアヤシイのが多いのですが、ダメ元で導入です。変な通信出しそうなら Wi-Fi ネットワーク側で通信監視してみればいいかな、と。

Android のモバイルネットワーク(APN)の設定にはプロキシサーバの設定が入れられるので、こんな感じで設定を入れればすべてのモバイル通信がプロキシサーバ(今回導入したアプリ)目指して飛んでくるはず。

f:id:k1z3:20180619000305p:plain

結果

プロキシログをアプリ側で確認してみると、広告サイトやトラッキングサイトの読み込みがたくさんありました。広告やトラッキングスクリプトの読み込みや実行は意図していないにも関わらず、もちろんトラッキングを動かしていることは閲覧者に対して明示されていませんが、たくさんダウンロードしてたくさん通信量とスマホの処理能力が利用されていました。

f:id:k1z3:20180619001716p:plain(例です。他意はありません。)

今回入れたプロキシサーバではログを確認することで気になる広告やトラッキングスクリプト(上記のサイトの様にHTTPの場合)、外部サイトの読み込みを把握することができます。ドメインで遮断する設定ができるので、いらない広告系ドメインはバシバシとフィルタに追加していくことで余分な読み込みを遮断。結果としてサイト閲覧中のうっとおしい誤タッチを狙った広告は出なくなりました。通信量も減ったので導入は正解だったかな、と考えています。

f:id:k1z3:20180621012001p:plain

VirusTotal でのハンティング

VirusTotal Intelligence について掘り下げた内容の本を技術書典8に向けて執筆しました。現在 BOOTH にて販売しておりますので、ぜひご確認ください。

malrina.booth.pm

 

※ 少し詳しく書いた記事を以下に公開しています(↑の本はさらに加筆した内容となっています)。

こちらも参考にして下さい。

 

はじめに

マルウェアの検体を取得するサイトとして有名なところで VirusTotal が挙げられます。有償版の VirusTotal Intelligence なら検体のダウンロードが可能です。ただ、せっかくの有償版の Intelligence をただ検体をダウンロードするためだけに使用していたら勿体ないでしょう。

 

例えば、こんな検体を探すことはできますか?

  • 解析したいハッシュ値を持つ検体の亜種
  • 特定のファイル名の検体
  • ベンダ検知結果に特定の値(マルウェアの検知名など)を持つ検体
  • 特定のベンダだけが悪性と判定している検体
  • 特定のドメインにアクセスする検体

 

探し方

探し方は、ちゃんと VirusTotal Intelligence のヘルプページに書いてあったりします。

f:id:k1z3:20180613000526p:plain

VirusTotal - Free Online Virus, Malware and URL Scanner

 

ベンダの検知結果から探す

このヘルプページの「Identifying files according to antivirus detections」章を見てみると、ベンダの検知結果ベースの検索の仕方が書いてあります。たとえば、JPCERT/CC が先日分析センターだよりで発表した PLEAD の検体を例に試してみたいと思います。

 

攻撃グループBlackTechが使うマルウエアPLEADダウンローダ (2018-05-28)

 

分析だよりではハッシュ値 bc2c8cc~ の検体を筆頭に 4 種類の PLEAD のハッシュ値が掲載されています。この検体を VirusTotal で確認してみると、たしかに(AhnLab-V3だけですが)PLEAD と判定しています。もしかしたらほかのベンダが PLEAD と判定したほかの検体があるかもしれません。

f:id:k1z3:20180613001220p:plain

 

VirusTotal Intelligence の検索窓に engines:plead と入力して検索してみると...

 

f:id:k1z3:20180613001648p:plain

 

20件も見つかりました。もちろん検知名に PLEAD が含まれているからと言って必ずしも PLEAD とは限りませんが、解析をしてみて検体の特徴を調べてみれば亜種かどうかは明白になるはずです。同じベンダが PLEAD と判定しているならさらに亜種である可能性は高そうです。今回は AhnLab-V3 のみが PLEAD と判定している検体だったので、このベンダ(エンジン)が PLEAD と判定している他の検体を探してみましょう。

 

VirusTotal Intelligence の検索窓に ahnlab-v3:plead と入力して検索してみると...

 

f:id:k1z3:20180613002149p:plain

 

2件になりました。新たに発見した検体は imphash の値は全く同じ結果ですしファイルサイズも同じです。おそらく亜種でしょう。Behavior でサンドボックスでの動作結果を確認してみると、JPCERT/CC の記事にはないドメインDNS リクエストを投げていることが分かります。おそらく、このドメインもフィルタリング対象にした方がいいでしょう。

 

この他のいろいろな検索用のプレフィックス

冒頭で紹介した VirusTotal Intelligence のヘルプページの「Search modifiers」には、さまざまな検索用プレフィックスが書かれています。また、AND/OR/NOT を使った指定方法も書かれているので、検索結果の対象を絞りたいときに活躍するはずです。

 

プレフィックス「tag」ではタグ付けされた結果を検索できるので、たとえば最近もよくばらまき型の攻撃に使用される CVE-2017-11882 (数式エディタの脆弱性)を使ったファイルを探したい場合は tag:cve-2017-11882 などと検索して探してみるのも一興でしょう。

 

f:id:k1z3:20180613003717p:plain

 

1000件以上見つかっちゃいました f^^;

 

更新履歴

  • 2018/06/12 PM 新規作成

Panda Banker 解析 (6)

Panda Banker 解析 (1) - 解析メモ ... 軽く動作確認

Panda Banker 解析 (2) - 解析メモ ... UnhandledExceptionFilter による耐解析機能

Panda Banker 解析 (3) - 解析メモ ... アンパック

Panda Banker 解析 (4) - 解析メモ ... Extended Attribute (EA) による耐解析機能

Panda Banker 解析 (5) - 解析メモ ... コードインジェクション解明

 

前回コードインジェクションしている手法は判明しているので、今度はインジェクション先(svchost.exe)をデバッグしてみたい。できればエントリポイントからのデバッグがしたい。

 

コードインジェクションは API Monitor のログを見ると、CreateProcessW でプロセス作成、コード注入後、CreateRemoteThread でスレッド開始の流れ。それぞれにブレイクポイントを貼ってみる。

続きを読む