CODE BLUE Tokyo2016の学生スタッフをしてきました!!
CODE BLUEは「世界トップクラスのセキュリティ専門家による日本発の情報セキュリティ国際会議」です。
1日目はスタッフ懇親会 & 会場設営、
2日目はフリーなので国内外のトップセキュリティ専門家による講演を聴講することができました。
3日目は学生スタッフとして活動。自分の担当は受付(通訳アシスタント)になりました。
CODE BLUEの開催日は2日間あるのですが、学生スタッフには1日は参加者と同様に講演などを自由に聴講させて頂けるなどの配慮があり、大変楽しかったです!
事前の打ち合わせで僕は英会話ができるということで、受付・通訳アシスタントの担当になりました。仕事内容としては今年初開催のCODE BLUEのハッカソン、コンテスト会場の受付です。コーヒー入れやお菓子の補充などが主な仕事でした。他にも、ハッカソンのBGMの設定(soundcloud)などをしました。peatixの方たちと一緒に受付業務をしました。
また、午後の休憩時間には、自動車のハッキングコンテストに参加しました。初めての自動車ハッキングがすごく楽しかったです!!
最後にはNetworking Partyがあります。お寿司等も振る舞われ、とても豪華です!僕は自動車ハッキングでとても仲良くなったフランス人のETASの企業の人たちと会話を楽しみました。
国際交流に関しては、学生でも技術があって、同じ研究テーマだったり、コンテストで仲良くなれば国籍関係なく楽しめます!
それでは、講演の内容やコンテスト内容についてです。
PowerShellの難読化
PowerShellスクリプトの難読化方法と難読化ツールについての講演を聞きました。
PowerShellとは
PowerShellは主にWindowsで使用される、.NET上で動くコマンドライン/シェルスクリプトです。オブジェクト指向のシェルスクリプトプログラミングができます。
(Windowsだとコマンドラインはcmd、シェルスクリプトはbatchfileが結構有名だと思います。)
PowerShellが優れているところは、.NETベースのため、「.NETでできることはほぼPowerShellでできる」ようになることです。
これによって、3rd partyパッケージ無しでPowerShellのコマンドでネットワーク通信、XMLのパーシング、HTTPサーバー起動などが出来ます。bashより高機能です。
PowerShellはWindows Vistaからデフォルトでインストールされていて、また.NETもデフォルトでイン
ストールされている場合が多いです。
高機能なシェルを環境構築なしで使用できることが、大きな利点だと思います。
PowerShellとセキュリティ
PowerShell(スクリプト)は悪用するとcmd/batchfileと同じようにマルウエアのようなものや悪意のある動作をすることが可能です。
悪意のある動作を防ぐためには(セキュリティ対策)、その悪意のある動作を発動させるPowerShellコマンドを検知して防げば実現可能です。
PowerShellはほとんどの実行されたコマンドをロギングすることが可能で、これを利用することでPowerShellの悪意のあるコマンド検知ができるのではないかと思われます。
ここで、PowerShellのスクリプトを難読化することができれば、悪意のあるPowerShellスクリプトがシグネチャとして検知されないので、PowerShellの悪意のあるスクリプトに対するセキュリティ対策を突破することが可能です。
PowerShellの難読化は比較的簡単で、*-String cmdletsを使用して文字列置換/連結したり、コマンド引数をランダムに省略/省略しないことによって実現することが可能だそうです。
PowerShell難読化自動化ツール: https://github.com/danielbohannon/Invoke-Obfuscation
また、PowerShell Logに実行した悪意のあるコマンドを残さないためのテクニックなども発表していました。PowerShell Logに情報を残さなければ、PowerShell Logを活用したPowerShellのセキュリティソフトウエアを突破できます。
PowerShellの元となる.NETのSystem.Management.Automation.dllを直接叩いたりcmdからpowershellを引数指定で子プロセスとして実行することでPowerShell Logを残さずPowerShell Scriptを実行することができるそうです。
自動車のハッキング
何とか全問解くことができ、景品のマグカップとタンブラーをゲット!!!
最近の自動車の仕組み
自動車にはエンジンを制御するためのコンピューターであるECUというものが最近の自動車には100個以上付いています。
前右の車輪を制御するためのECU, 前左の車輪を制御するためのECU, ステアリングのためのECUなど、ECUは自動車の制御のために色々な役割を持ちます。
自動車の制御は、このECU同士で通信しながら情報を共有してエンジンなどを制御することによって成り立っています。
そのための、ECU同士を通信させるためのネットワークが車載ネットワークです。
自動車のハッキング
車載ネットワーク、これが自動車のハッキングに最もつながるキーワードです。
車載ネットワーク上に、悪意のある情報をECUなどに送信することができれば、車の操縦を乗っ取ることができます。
車載ネットワークにはいくつか規格がありますが、標準規格になっているのがCANで、今回はCAN上で自動車のハッキング問題に挑戦しました。
今回はCANのパケット解析ツールを使って、自動車のハッキングに挑戦しました。
CANの上位プロトコルであるUDS(アプリケーション層)とISO-TP(トランスポート層(フロー制御付))のパケットを手作りして送信したり、UDS/ISO-TPのパケットを解析して問題を解きました。
1. パケットの重複を消去して、ID順にソートしてASCIIのデータ文字列を読んでフラグを見つける
2. フラグで指定されている通信のパケットを作ると、access denied errorを示す通信が帰ってきた
3. フラグで指定されている通信を通すには、認証を通す必要がある
4. seedとanswerが対応している過去の通信ログから、暗号化関数を導き出し(xor)、seed要求リクエストを送ってseed valueを手にいれ、アクセス解放リクエストとして計算したanswerをパケットとして送信
5. 管理者権限を取得(この時点で自動車のハッキングとしては完了)
6. フラグで指定されている通信のリスポンスが通信ストリームとして帰ってきた
7. 通信ストリームをpythonスクリプトで解析すると、1つのバイナリデータが出てきた
8. バイナリデータはPNG画像であることが判明し、ファイルを開くとQRコードが出てきた
9. QRコードを読み込むと、新たなフラグが出てきた
10. フラグで指定されているCAN上でのファイルアップロード・ファイルダウンロードをするためのパケットを作って送信すると、何かのバイナリデータを含む通信ストリームがかえってきた
11. pythonスクリプトでパケットを解析し、1つのバイナリデータにしたところ、ファイルフォーマットがPDFと判明
12. PDFを開いて自動車ハッキングのコンテストクリア!!!