サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
ntddk.github.io
Security meets Machine Learningという勉強会にて,上記のタイトルで発表した.資料はこちら: 謎の力が働いて会社からの発表になっておりますが,機械学習の研究をしているわけではありません.既存研究の再現実装を試みているとこれ中国語の部屋じゃんという気持ちになる. ともあれ,これまで各種資料はただSpeakerDeckに載せるだけだったのを今後はブログから一元的に参照できるようにします.
としてやれば期待される入力値[x = -1, y = 2]を算出できる.これだけではだからなに? という感じだが.シンボリック実行は各命令とメモリの状態からこの割当を自動生成するものだと思えばよい.これがangrやらTritonやらmiasmやらmanticoreやら,その他いまどきのバイナリ解析ツール群の基盤となっているというわけです. 参考になったサイト で,メモっとかないと忘れるので.SAT/SMTソルバのしくみやシンボリック実行全般まで広げると膨大になるということで,z3pyに限っています.前者については高速SATソルバーの原理 - 基盤(S)離散構造処理系プロジェクト[PDF]やSAT/SMTソルバの仕組み - SlideShareを読むとよいでしょう.いまどきのSAT/SMTソルバにはVSIDSやらLubyリスタートやらいろいろな工夫が盛り込まれているが,とりあえずユーザとして
いまさらながら,情報セキュリティ系論文紹介 Advent Calendar 2016あるいはBitVisor Advent Calendar 2016に投稿されるはずだった文章を供養する. はじめに 本稿では,シン,すなわち薄いハイパーバイザ (thin hypervisor) の動向を紹介する. 薄いハイパーバイザとは,小規模であることを志向したハイパーバイザだ——ということにしておこう.小規模というのは,一部のイベントのみトラップするということだ.メリットとしては,実装・学習コストやオーバーヘッド,TCB (trusted computing base) を削減できる点が挙げられる. 用語の初出はBitVisorの論文[T. Shinagawa, et al. VEE’09]だが,多くはWindows向けルートキットとして開発されたBlue Pillという手法[J. Rutkowska
本稿はSFC-RG Advent Calendar 2016の4日目である. はじめに あなたは研究の中間発表を終えて,今晩何を食べようか考えている.たしかに準備不足ではあったけれど,研究の前提をいまいち解さないファカルティの高飛車な質問にはうんざりしたし,今日くらいはパーッと気分転換したいものだ.そういうわけで,あなたは⊿館を飛び出して焼肉 ざんまい 湘南台店に行くことにした. 組合せ最適化 さて,着席し,メニューを開いたあなたはしばし考える.限られた予算,限られた時間,限られた胃袋の容量——いったい何を頼めば最も満足できるだろうか? そんなとき,組合せ最適化が役に立つんです.騙されたと思って,メニューを必死に転記してみよう:
はじめに サイバーセキュリティに携わる者なら一度くらいはKDD Cup 99 Dataなるデータセットの名を耳にしたことがあるのではないだろうか.KDD Cupは国際会議SIGKDDによるデータマイニングのコンペで,KDD Cup 99 Dataはそのためのネットワーク侵入検知にまつわるデータ.正常通信と攻撃を分類するタスクが与えられた. 見てみよう. データセットの構成 データは現在,カリフォルニア大学アーバイン校によって配布されている. それぞれのファイル内容は下記の通り: ファイル名 ファイル内容
はじめに 今年のセキュリティ・キャンプでは,うっかり「なぜマルウェア解析は自動化できないのか」という題の講義を行ってしまったが,それだけセキュリティの世界には自動化の波が来ている.本稿では,脆弱性分析の自動化をめざして開発されているangr, AFL, Drillerをざっくり紹介する. angr angrはUCSBの研究チームにしてCTFチームShellphishを中心に開発されているバイナリ解析フレームワーク.論文[PDF]はIEEE S&P 2016に採択されている.手法の新規性というよりは実装力でゴリ押しするタイプ.評価には,アメリカ国防高等研究計画局が5,500万ドル(約56億円)の資金を投じてまで開催した脆弱性分析・修正の自動化コンペ,DARPA Cyber Grand Challenge (CGC) のデータセットが用いられている.CGCの決勝戦に進出したチームには75万ドル
※Rackサーバの方のUnicornではない. はじめに UnicornはQEMUベースの軽量,マルチプラットフォーム・マルチアーキテクチャ・JIT対応のCPUエミュレータ.周辺機器をエミュレーションしないため用途は限られるが,GoやPythonなど複数言語のバインディングを備えている.現在システムセキュリティ分野で最も注目されているOSSのひとつと言っても過言ではなく,AsiaCCS 2016で発表されたROPチェーン解析ツールROPMEMUや,遺伝的アルゴリズムによってROPチェーンを自動生成するツールroperのバックエンドとして用いられたり,Unicornと同じように注目を集めているバイナリ解析ツールangrとの連携が進められたりと,一大コミュニティを形成しつつある. コンセプトの説明はBlack Hat USA 2015の発表スライドに譲るとして,ここではその利用方法と内部実装に
これはマルウェアに感染した端末の基板で構成されたトロイの木馬.国際会議Cyber Weekの展示の一環. はじめに 先週,イスラエル外務省からの招待でイスラエルのサイバーセキュリティ産業の視察に参加した. 視察の参加者は日本政府・重要インフラ・セキュリティ業界関係に大別される.視察の目的は彼らにイスラエルの起業文化とサイバーセキュリティ技術を伝え,相互理解を図ることにあった.そんな視察になぜ一介のモラトリアム大学生でしかない私が潜り込めたのかというと,イスラエル外務省をハックしたから——というのは嘘.昨年発表したCODEBLUEというセキュリティカンファレンスのオーガナイザーにイスラエル大使館から打診があり,若者枠に組み込まれたという経緯である.なんと旅費はイスラエル外務省の負担. そういうわけで,記憶が錆びつかないうちに,イスラエルのサイバーセキュリティ事情を紹介したい. 総括 最初にま
これはなに @img2cap fileという形式で画像を投げつけると説明文をつけ加えて返信するだけのTwitter bot. しくみ CNN + LSTM. 以下の論文や実装を参考にした.裏ではChainerが動いている. 論文 [1411.4555] Show and Tell: A Neural Image Caption Generator 実装 apple2373/chainer_caption_generation: Caption generation from images using deep neural net dsanno/chainer-image-caption データセット Microsoft COCOをVGG_ILSVRC_19_layersで学習したもの はじめは論文通りの活性化関数と勾配法を試してみたが,dsanno氏のいうようにSGDよりAdamの方が高
読書メモ. はじめに 人間の脳を模したニューラルネットの手法,深層学習ディープラーニングがめざましい成果を挙げている–といった謳い文句をよく目にする.だが機械学習の専門書を紐解いても出てくるのはロジスティック回帰のお化けばかり. われらがPRMLのニューラルネットを扱う章にはこうある. しかしながら,パターン認識という実際的な応用の観点からは,生物学的な現実性などは全く不要な制約である. – C.M.ビショップ『パターン認識と機械学習 上』 (p.226) では,機械学習の文脈で言うところのニューラルネットと脳はどれほど異なっているのだろうか? ニューラルネットと脳の違い 結論から言えば全然違うわけだが,ざっくり以下の三点から整理できる(と思う): ニューロンのモデル ネットワーク構造 微分計算の手法 ニューロンのモデル 現在広く普及している多層パーセプトロンは,単純な差分方程式であるMc
# npm install cylon cylon-keyboard cylon-leapmotion cylon-rolling-spider node-slack Cylon.js Cylon.jsはロボティクス向けに開発されているJavaScriptのラッパーライブラリ. マイコンボードやドローン,スマートウォッチなど,さまざまなガジェットのSDKを統一されたインターフェイスで利用できる.反面,バグを踏み抜くと少ししんどい. たとえばキーボードに接続するには,次のように書く.
本稿は情報セキュリティ系論文紹介 Advent Calendar 2015の11日目である. TL;DR: テイント解析(taint analysis)やプログラムスライシング(program slicing),記号的実行(symbolic execution)やファジング(fuzzing)といったバイナリ解析技術を総動員して,マルウェアが通信するC&CサーバのフィンガープリントをC&Cサーバと通信せずとも生成する手法–AUTOPROBE[1]を紹介する. 背景 マルウェアによるサイバー犯罪はC&Cサーバやコンフィグファイルの配布元,二次検体の配布元など様々な悪性サーバ(malicious server)からなるインフラによって支えられている.攻撃者はこれらの悪性サーバを頻繁に閉鎖・移転させて対策から逃れようとする.とりわけ攻撃者の命令を送信してマルウェアの動作を決定するC&Cサーバはその
TL;DR: ソフトウェアの多くは外部からの入力に依存する実行パス(trigger-based code)をもつ. これを記号的実行(symbolic execution, シンボリック実行)などの解析手法から隠蔽する手法として,コラッツの問題を用いた線型難読化(linear obfuscation)がある[1]. 本稿ではしかし,線型難読化されたコードはコンパイラ最適化によってある程度除去できることを示す. コラッツの問題 コラッツの問題は数論の未解決問題のひとつである. 任意の1でない自然数nに対して,nが偶数ならば2で割り,nが奇数ならば3倍して1を足す.この操作を繰り返していくと,どのような自然数nから出発しても,有限回の操作のうちに必ず1に到達する. この定理は経験則的に正しいと考えられているが,いまだ証明はなされていない. 線型難読化 たとえば次のプログラムtr.cは外部からの
はじめに2015.08.11~15にわたって開催されたセキュリティ・キャンプ全国大会 2015に解析トラックの講師として参加した.講義では「仮想化技術を用いてマルウェア解析」と題して,QEMUをベースに開発が行われているDECAFという解析プラットフォームを用いて演習を行った. 講義資料 講義内容演習では実際のマルウェアに用いられている解析妨害機能を備えたサンプルプログラムを扱った.素のDECAFには解析妨害機能への対策が施されていない.そこで,受講者にはDECAFのプラグインを拡張し,対策手法を実装して頂いた. 演習で用いたプログラムはGitHub上で公開している. 解析妨害機能を備えたサンプルプログラム ntddk/blue DECAFプラグインのひな形 ntddk/geteip ひな形にある通り,IsDebuggerPresent()をフックするDECAFプラグインは以下のように書け
はじめに田中久美子『記号と再帰: 記号論の形式・プログラムの必然』(“Semiotics of Programming,” Cambridge University Press, 2010.)は,プログラミング言語の記号論についての記念碑的な書籍である.かねてよりPeter B. Andersenらによってコンピュータ記号論(computional semiotics)は語られていたものの,プログラミング言語については議論が追い付いていなかった. 本書はまず,対応関係が不明瞭であったソシュールの記号論とパースのそれとを,関数型パラダイムとオブジェクト指向パラダイムとの対比をもって整理する.その上で,記号の本質は再帰にある(p.1)として,絵画,プログラミング言語,哲学を横断した考察が展開される.とまあ随分と衒学的な書籍なのだが,それゆえ危うさを孕んでいるようにも思う.ここではあえて,本書の
はじめにQEMUは動的バイナリ変換を用いた完全仮想化式のハイパーバイザである. QEMUは実行対象の命令列を逆アセンブルし,いちど中間表現に変換したうえで,ホストのアーキテクチャの命令列に変換して実行する.これによりQEMUは異なるアーキテクチャのバイナリを実行することができる. しかしQEMUは遅かったため,アクセラレータとしてkqemuが開発された. kqemuはユーザーモードのコードをホストのCPUに実行させる準仮想化ドライバであり,やがてKVMへと変貌を遂げた.さらにKVMはハードウェアによる仮想化支援機能を用いることで,さらなる高速化を実現した.もはやKVMにおいてQEMUはハードウェアのエミュレーションにしか用いられていない. かわいそうなQEMU! しかしQEMUの活躍する場面はいまだ多く残されている.たとえばマルウェア解析で. それでも遅いのは困りものだ.QEMUはどこが遅
耐解析機能の分類Gabriel N. BarbosaとRodrigo R. Brancoは,マルウェアの耐解析機能をAnti-Debugging, Anti-Disassembly, Obfuscation, Anti-VMの四種類に分類した.彼らはIntelのセキュリティ研究者であり,マルウェアに備わった耐解析機能の統計を過去二回に渡って発信してきた. 気になるのは,サンドボックスの実装にあたって問題となるAnti-VMだ.8,103,167もの検体を用いた調査によると,その内訳は以下のようになっている. これらはいずれもVMware社製品を検出するための手法である.残念ながら他の仮想マシンモニタについての情報は掲載されていない. 仮想マシンモニタの分類以前にも少しばかり述べた,サンドボックスの透明性(transparency)に関する話を蒸し返そう. サンドボックスにOut-of-th
__libc_start_main()gccが内部で呼び出すldは,glibcの初期化を行うためにcrt*.oを静的リンクする.これによって,_start()などのシンボルがバイナリに埋め込まれることになる. ここで埋め込まれるシンボルには未定義なものが存在する.その一つとして,crt1.oに含まれる__libc_start_main()が挙げられる. これはmain()より先んじて呼び出される関数であり,暗黙的にcrt1.oがリンクの対象となる.しかし未定義であるがゆえに,先にソースコードに__libc_start_main()が宣言されていた場合,ldはこちらをシンボルとして採用してしまう. どちらが先か上記を踏まえて,次のコードではどちらの関数が先に呼び出されるだろうか.
VMI仮想マシンモニタからゲストのリソースを監視・制御する技術をVMI(Virtual Machine Introspection)という. その発祥は2003年に遡る.当時はハニーポットの研究が盛んな時期であり,VMIは仮想マシンにおける侵入検知を実現する手法として提案された.これはマルウェア解析の自動化に応用されており,仮想マシンモニタによるサンドボックスを構築し,VMIによってマルウェアの挙動を監視するというアプローチが一般的となっている. さて,VMIにおける問題点にセマンティックギャップというものがある.原義は高級言語とハードウェアとの乖離であるが,OSと同じ粒度で情報を取得することのできるゲスト内部(in-the-box)とハードウェアの粒度で情報を取得することしかできないゲスト外部(out-of-the-box)の乖離という意味でも援用される. Transparent San
はじめに2014.12.07~08にわたって開催されたSECCON CTF 2014の予選(英語版)にて,ROP: Impossibleというpwn問題が出題された.タイトルの通り,この問題ではROPが制限されている. ここでは,その実現手法として用いられていたIntel Pin(pintool)について,またこの問題にあった欠陥について述べる. したがって,このエントリはROP: Impossibleのネタバレを兼ねている.注意されたし. 問題の概要問題文は以下の通り.Pinによって保護された脆弱なバイナリからフラグを読み出せというものだ. ropi.pwn.seccon.jp:10000 read /flag and write the content to stdout, such as the following pseudo code. open("/flag", 0); rea
実マシンでは,ecx*word=6バイトが1回で書き換わるが,QEMUの動的バイナリ変換では2バイトずつ3回で書き換わる.そのため,1回目の書き換えで0xeb 0x01 0xa5すなわちjmp +01になってしまい,qemu_foundにジャンプしてしまう. その他には,ページ境界を越えてブロックの変換が行われた場合にページフォルトが発生してしまうことも考えられるし,ブロック境界でのみ割り込みが行われる,CPUサイクルの消費が著しいといった実マシンとの相違点もある. さらに問題なのが,フラグの遅延評価だ.例えば,cmpとjzの組み合わせなどの条件分岐は,EFLAGSを更新する.だが,QEMUにおいてはcmpが実行される段階でEFLAGSの計算は行われない.実際に計算されるのはjzの実行時,それも分岐を決定するためのZFのみが計算される.この設計はエミュレーションの高速化に寄与しているが,も
Yuma Kurogome is a security researcher at NTT Secure Platform Laboratories. His interest lies in malware detection, analysis (in particular symbolic execution), and anti-analysis; His passion is in honing both defensive and offensive skills while playing the “cat-and-mouse” game of security. Prior to joining NTT, he received his BA degree from Keio University in 2017. When away from computers, he
はじめにシンボリック実行(symbolic execution)という用語をセキュリティ系の論文でよく見かけるようになった.ここでは,シンボリック実行の基礎となる理論を辿る.筆者はソフトウェアテストの研究には疎く,おそらく本稿には若干以上の誤謬と誤解が含まれているだろう.ぜひ識者の教示を乞いたい. 発祥シンボリック実行は主にソフトウェアテストの領域で古くから研究されてきたトピックである.シンボリック実行という用語の初出は遡ること38年前,James C. KingらによるSymbolic Execution and Program Testing [PDF]という論文だ.Dijkstraがgoto文の濫用による大域脱出を批判したのが1968年であり,Guarded Command Languageを提案したのが1975年のことである.この論文が発表された1976年当時はまさに構造化プログラ
はじめにReturn-oriented programming(ROP)が提唱されて久しい.CTFにおいても,ROPは当たり前のように要求される技術となってきている.一方で,ROPに代わる新たな攻撃手法も模索されている.ここでは,そういったROP以後の攻撃手法を概観する. Return-oriented programmingコンセプトまずは簡単にROPをおさらいする. ROPは主にハードウェアDEPという脆弱性対策技術に対抗するために編み出された攻撃手法である.ハードウェアDEPはCPUのNX bitを有効化することで,スタック上でコードを実行する攻撃を無効化する. そこで,ROPはコード領域のretで終わる命令列(gadget)を実行することによってこれを回避する.単体のgadgetではわずかな処理しか行えないが,スタックに次のgadgetのアドレスを積むことで,gadgetを組み合わ
このページを最初にブックマークしてみませんか?
『Yuma Kurogome』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く