第24回北海道情報セキュリティ勉強会 レポート「標的型サイバー攻撃」「マルウェア解析」#secpolo

2017.04.16

こんにちは、コカコーラ大好き カジです。

今日は、第24回北海道情報セキュリティ勉強会「マルウェア解析」「標的型サイバー攻撃」に参加してきましたので速報レポートします。

セッションの内容は次の通りです。

  • セッション 1「標的型サイバー攻撃 ~現在注視すべきキャンペーンとは~」 講師:トレンドマイクロ株式会社 加唐 寛征さん
  • セッション 2「シン・マルウェア解析」 講師:トレンドマイクロ株式会社 新井 悠さん

講師の方から、内容は公開しても問題ないとの事でしたのでブログに書きます。

セッション1 「標的型サイバー攻撃 ~現在注視すべきキャンペーンとは~」

サイバー攻撃の概要

  • 分類
  • 概要
  • 手法

国際的な議論

伊勢志摩サミットで明言された「サイバー攻撃関するG7の原則と行動」

Tallinn Manualとは

2013/3 1.0にリリース NATOのCooperative Cyber Defense Centre of Excellence(CCD COE:NATOサイバー防衛センター)が作成 サイバー攻撃と国際法の関係を記載した文書

注意:NATOの部隊が作ったけど、NATOの公式見解ではない。

サイバー攻撃とは攻撃的であろうと防御であろうと・・・・ 人の負傷ないし死、物の損傷ないし破壊が起きたもの

<事例>紹介されたものの一部(全部メモできなかった) - 下水処理場への不正アクセスを実施、コントロールを奪い未処理の下水を流して海洋生物に被害。 - Stuxnetがウラン濃縮施設の遠心分離機を破壊

Cyber Physical Attack

サイバー攻撃から物理空間への攻撃

広義の意味でのサイバー攻撃

サイバー攻撃の分類例

標的型サイバー攻撃

標的型サイバー攻撃とは、重要情報の入手を最終目標として時間、手段、手間、手法を問わず、目的達成に向けて、特定の組織を攻撃対象として、その標的に特化し継続的に行われる攻撃。

APT(Advanced Persistent Threat)

標的型サイバー攻撃のモデル

標的型サイバー攻撃対策の図

  • 事前準備
  • 初期侵入
  • 端末制御
  • 情報探索
  • 情報集約
  • データ送出

図の参照元ページ

事前準備

  • 検索エンジンを利用した情報収集
  • SNSを利用した情報取集
  • 物理的な接触(名刺の入手) など・・・

初期侵入

  • コンピュータへの侵入
  • 標的型メール ソーシャルエンジニアリングを利用して標的ユーザを信用させて、添付されているマルウェアを実行させる。 RLOを利用した拡張子偽造を利用する。
hogehoge.rcs.ppt=hogehoge.tpp.scr

端末制御

  • C&Cサーバー(コマンド&コントロールサーバー)による端末制御
  • 端末情報の収集=一般企業がオープンしているTCPポートを利用

情報探索

  • Windows 正規ツールや正規のコマンドなどを使って実行

情報集約・情報送出

  • .rarや.zipを利用 rarファイル大好き。パスワード圧縮ファイルは、ヘッダにリストが含まれていない。チェックツールで発覚不可。

攻撃手法

  • 共有管理の「net use」コマンドを使って接続し、copyコマンドで送付
  • atコマンドでマルウェアを実行するようジョブ登録

攻撃者が悪用するWindowsコマンド JPCERT発表資料より

Hot Topic

GRIZZLY STEPPE

  • アメリカ大統領選へのサイバー攻撃による介入
  • ロシアが行なったと主張

トレンドマイクロでも調査した

  • 日本でも起きる可能性があるため
  • アメリカの主張通り、本当にロシアが攻撃元なのか?を確認

実施した内容

  • 世界中のニュースを調査
  • アメリカ政府の公開情報を詳細確認

BKDR_COZER.LP

  • COZERはロシアのAPT29と呼ばれる攻撃者グループ

カスペルスキーの解析した検体と同一のものあった。 APT29が関与の可能性がある。

ただし、別なものもあった。 TROJ_FAREIT.YYTDL

考察

本当にロシアが絡んでいるのか?→多分ロシアが絡んでいるだろう

サイバー攻撃への対応処置

  • これまでは日常的に攻撃されていて、防御処置はするが、攻撃元への非難はしない
  • 「GRIZZLY STEPPE」で情報の暴露なども行い「暗黙の一線」を超えた

  • サイバー攻撃への報復方法の具体例になった

    • サイバー攻撃の具体的に行われたのは初
    • サイバー攻撃で報復せず別で報復を実施。
  • 日本も気をつけること  - 選挙結果が操作される可能性がある。

  • イギリスのサイバーセキュリティ戦略

    • セキュリティ戦略を国が主導で行なっていて効果が上がっている ①防衛 ②抑止 ③開発

質問

標的型サイバー攻撃で、net use コマンドなどで情報収集していたが、パスワードの入手はどのようにしたのか?

以下のツールを使ってパスワードをダンプ

  • WCE
  • MIMIKATZ

BlackEnergy

Ukraine Blackout

ウクライナの大規模停電

BlackEnergy

2007年に登場。ロシヤやマレーシアでDDoSマルウェア

2010年にBlack Energy2が登場

Blackout 2015

  • ウクライナで大規模停電が発生
  • 変電所7箇所
  • 電力会社のコールセンターにも電話によるDDoSが発生

  • 標的型メールにマルウェアを添付して侵入

  • VPNを介してICSへログイン
  • 停電の直接的な関与は定かではない。

トレンドマイクロのSPN(Smart Protection Network)で同じキャンペーンを観測

ウクライナの別会社への攻撃が検出されていた。

Blackout 2016

  • 冬の夜11:55に停電が発生
  • 1時間後に復旧
  • 2015年の攻撃とそんなに変わらない。
  • ウクライナの財務省と銀行関連

BlackEnergyとは

  • Cr4shという名前のハッカーが作成。
  • DDoS用マルウェアとしてソースコードを販売。
  • 2014年にV3が登場

Who is behind?-> Sandworm

  • Sandworm=ロシアの攻撃者集団
  • BlackEnergy=Sandwormではない。

  • C&Cサーバから抜き出したファイルがロシア語

  • ロシアと対立関係の組織を攻撃
  • ロシアに対する作成に従事する国・インテリジェンス機関の関連者を装う

  • ウクライナの電力会社、鉱業、銀行

  • アメリカの重要基盤
  • NATO

ウクライナの情勢

ウクライナは、親欧米派と親ロシア派の地域がある。

ロシアとウクライナの関係が悪化

停電が起きたのは、親欧米派の都市の変電所を行われた。

  • 大規模かつ継続して麻痺させることで、攻撃対象の地域を不安定にすることが狙い
  • 脆弱かを判断した上で、システムを掌握する次の攻撃
  • 短時間での復旧のため、攻撃ツールが正しく動くのかを確かめるためのテストとも考えられる

3つのキャンペーン

2015年7月ごろのキャンペーン

MS Officeのマクロ入りファイルで、ウィルスファイルをドロップさせ、そのファイルが、さらに別なDLLをダウンロードして、C&Cサーバへ接続する

2016年1月ごろのキャペーン

  • マクロウィルス入りのExcelファイル
  • VBAが不正なプログラムをダウンロード(パスワードロックがあり解除して中を確認)

  • C&Cサーバへ接続してファイルをダウンロード

  • BlackEnagyがダウンロードするはずが、現在はURLが無効になっている

2016年下半期のTeleBotキャンペーン

  • Telegram Bot APIを悪用するbot

標的型メールの侵入防止

  • メールゲートウェイ製品でファイル拡張子をフィルタリング
  • マクロは無効化や注意喚起
  • 制御のネットワークと業務のネットワークは分離すべき(NISTも推奨)

まとめ

  • サイバー攻撃により生活インフラを停止に追い込まれることが考えられる

セッション2 「シン・マルウェア解析」 (ハンズオン形式)

コードで書くことで解析をスキルトランスファー

著書

  • アナライジング・マルウェア
  • サイバーセキュリティプログラミング

など・・・

マルウェアの脅威の現状

  • ファイルを暗号化して金銭をだまし取る
  • ネットバンク利用者を狙う
  • 標的型攻撃

検出方法の概要から・・・

パターンマッチング方式

不正コードの検出方法として最も一般的 - ウィルスの検体ら、あらかじめ特徴的な部分を抜き出してデータベース化 - 検索対象となるファイル内のコードと比較してそのファイルがウィルスかどうかを判断

長所と短所 長所 - 効率的に高い精度でウィルスの検出が可能 短所 - 検出パターン作成のために、不正プログラム検体の入手が必要

ヒューリスティック

パターンマッチング方式の短所を補う。 人間の経験則に基づく

長所 - 不正プログラムを持っていないくても疑わしい活動を行うプログラムを検出 短所 - 精度とパフォーマンス 検出されたプログラムを不正プログラムだと断言するためには解析を行う必要がある

ジェネリック検出

  • 既知ウィルスの亜種に迅速に対応するための検出技術
  • ジェネリック検出では複数の既知ウィルスから共通点を見つけて亜種と似ているウィルスを検出可能にする。
  • 検出精度の調整が重要

長所 - 疑わしい活動を検出 短所 - 厳密な精度は不可。解析が必要

ウィルスの検体数は上昇

2014年から年間1400万以上出ている AVTEST Statistics

マルウェア対策の鍵は自動化

  • 目には目を、自動化には自動化を
  • 自動化してみたいけどどうしたらいいかわからない。

よろしい、ならばPythonだ

なぜPythonを使うのか?

  • 科学技術計算や、機械学習、ディープラーニングなどが広い分野でも活用と転用が可能
  • 情報セキュリティ分野においてもライブラリが充実
  • C/C++などのコンパイラ起因のエラーに悩まされることから解放
  • CTF

スクレイピングとは

Webを通じて情報を自動収集する技術や手法の総称

ハンズオン

スクレイピングを使って、プロキシサーバのアクセス先のログを以下のサイトに投げて、不正サイトへのアクセスがないか?を確認する。

トレンドマイクロ Site Safty Center

上記サイトにPythonでURLリストを投げて結果を一気に確認するPythonをハンズオン *時間をある程度置いて実行しないと、DoS扱いで実行されないので注意。

ハンズオンはPythonのコードがコピーアンドペーストできないPDFファイルに記載されており、写経して参加者で実施。 www.yahoo.co.jpをチェック

from robobrowser import RoboBrowser
import re

url = 'https://global.sitesafety.trendimicro.com/'

browser = RoboBrowser(history=True,parser='html.parser')
browser.open(url)

form = browser.get_from(action='result.php')
form['urlname'].value = 'www.yahoo.co.jp'
browser.submit_from(form)

result = browser.find(class_=re.compile(r'¥blabeltitleresult¥b'))
print(result,string)

リストから読み込むもの

from robobrowser import RoboBrowser
import re
import time

url = 'https://global.sitesafety.trendimicro.com/'
path = '<配布物保存先>/urls.txt'

browser = RoboBrowser(history=True,parser='html.parser')

f = open (path)
line=f.readline().strip()

while line:
 browser.open(url)
 form = browser.get_from(action='result.php')
 form['urlname'].value = line
 browser.submit_from(form)
 result = browser.find(class_=re.compile(r'¥blabeltitleresult¥b'))
 if result:
        print("[*]{0} : {1}".format(line,result.string))
 else:
    print("Error, captcha required")
 time.sleep(10)
 line = f.readline().strip()

マルウェア解析の手法

  • 表層解析
  • 動的解析
  • 静的解析

専門知識が必要

  • プログラム開発の経験
  • アセンブラなどの知識も必要(エスパー)

機械学習によるマルウェア解析とは

  • アセンブラがわからなくてもある程度解析ができる。
  • 特徴量を得るが必要

特徴量とは

  • 機械学習アルゴリズムに回帰させたり分類させたりするためのデータ。 Webを例にすると出てくる単語を特徴量として、どんなサイトかを把握する。

データの特徴量って?

  • Webサーバのログで
  • メソッド、URI、HTTPバージョン、アクセス元IPアドレス、レスポンスコード、曜日などをラベリングする。

機械学習は魔法のツールではない

  • 目的と手段は何か?
    • 機械学習は勝手に学習してくれません。
    • 特徴量が何かを特定する → 経験が必要
  • 絶対的にうまくいくとは限らない

前処理(データマイニング)

3分クッキングのようにハンズオンは前処理済み・・・

  • valid.csv
  • malware.csv

Windowsの実行ファイル

Portable Executable(PE)形式

  • PEヘッダという値を複数持っている
  • PEヘッダから4つを特微量として今回は選定済み。

今回の使用する次元削減方法

詳細はむづかしいので説明は省略

ハンズオン

Python2.7 Anacondaをインストールしたパソコンで実施

以下の2つをハンズオンはPythonのコードがコピーアンドペーストできないPDFファイルに記載されており、写経して参加者で実施。

  • PCA
  • LDA

PCA版

import glob
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

df = pd.read_csv('<配布物保存パス>/malware.csv')
df2 = pd.read_csv('<配布物保存パス>/valid.csv')

X_reduced = PCA(n_components=2).fit_transform(df.ix[:,2:])
Y_reduced = PCA(n_components=2).fit_transform(df2.ix[:,2:])

plt.scatter(X_reduced[:, 0],X_reduced[:, 1], c="red")
plt.scatter(Y_reduced[:, 0],Y_reduced[:, 1], c="blue")
plt.savefig("<配布物保存パス>/test1.png")
plt.show()"

LDA版

import glob
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

df = pd.read_csv('<配布物保存パス>/union.csv')

X_reduced = LDA(n_components=1).fit_transform(df.ix[:,2:], df.ix[:,1])

print X_reduced
plt.plot(X_reduced[:, 0],c="red")
plt.hlines(y=0.2, xmin=0, xmax=355, linestyles="dashed")
plt.savefig("<配布物保存パス>/test1.png")
plt.show()

LDAの結果はこんな感じになりました。

LDA

まとめ

  • 大量のマルウェアに対抗するには自動化が重要
  • 機械学習で行うためには、ラベリングが必要、ラベリングには専門家が必要。

必要な知識

  • 数学2AB(高校教科書)
  • 線形代数(大学教科書)

あわせて読みたい

暗躍するグリズリー・ステップ

感想

資料が公開されたらリンクを貼ります。

毎回恒例のおやつは美味しかったです。 べんべやの焼き菓子でした。

IMG_9416