タグ

ブックマーク / ntddk.github.io (11)

  • コラッツの問題を用いた難読化は脅威なのか | 一生あとで読んでろ

    TL;DR: ソフトウェアの多くは外部からの入力に依存する実行パス(trigger-based code)をもつ. これを記号的実行(symbolic execution, シンボリック実行)などの解析手法から隠蔽する手法として,コラッツの問題を用いた線型難読化(linear obfuscation)がある[1]. 稿ではしかし,線型難読化されたコードはコンパイラ最適化によってある程度除去できることを示す. コラッツの問題 コラッツの問題は数論の未解決問題のひとつである. 任意の1でない自然数nに対して,nが偶数ならば2で割り,nが奇数ならば3倍して1を足す.この操作を繰り返していくと,どのような自然数nから出発しても,有限回の操作のうちに必ず1に到達する. この定理は経験則的に正しいと考えられているが,いまだ証明はなされていない. 線型難読化 たとえば次のプログラムtr.cは外部からの

    コラッツの問題を用いた難読化は脅威なのか | 一生あとで読んでろ
  • KDD Cup 99 Dataおぼえがき | 一生あとで読んでろ

    はじめに サイバーセキュリティに携わる者なら一度くらいはKDD Cup 99 Dataなるデータセットの名を耳にしたことがあるのではないだろうか.KDD Cupは国際会議SIGKDDによるデータマイニングのコンペで,KDD Cup 99 Dataはそのためのネットワーク侵入検知にまつわるデータ.正常通信と攻撃を分類するタスクが与えられた. 見てみよう. データセットの構成 データは現在,カリフォルニア大学アーバイン校によって配布されている. それぞれのファイル内容は下記の通り: ファイル名 ファイル内容

  • Intel PinにおけるNXの扱い | 一生あとで読んでろ

    はじめに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

  • angr, AFL, Driller | 一生あとで読んでろ

    はじめに 今年のセキュリティ・キャンプでは,うっかり「なぜマルウェア解析は自動化できないのか」という題の講義を行ってしまったが,それだけセキュリティの世界には自動化の波が来ている.稿では,脆弱性分析の自動化をめざして開発されているangr, AFL, Drillerをざっくり紹介する. angr angrはUCSBの研究チームにしてCTFチームShellphishを中心に開発されているバイナリ解析フレームワーク.論文[PDF]はIEEE S&P 2016に採択されている.手法の新規性というよりは実装力でゴリ押しするタイプ.評価には,アメリカ国防高等研究計画局が5,500万ドル(約56億円)の資金を投じてまで開催した脆弱性分析・修正の自動化コンペ,DARPA Cyber Grand Challenge (CGC) のデータセットが用いられている.CGCの決勝戦に進出したチームには75万ドル

    angr, AFL, Driller | 一生あとで読んでろ
  • Unicornのソースコードを読む (Python編) | 一生あとで読んでろ

    ※Rackサーバの方のUnicornではない. はじめに UnicornはQEMUベースの軽量,マルチプラットフォーム・マルチアーキテクチャ・JIT対応のCPUエミュレータ.周辺機器をエミュレーションしないため用途は限られるが,GoPythonなど複数言語のバインディングを備えている.現在システムセキュリティ分野で最も注目されているOSSのひとつと言っても過言ではなく,AsiaCCS 2016で発表されたROPチェーン解析ツールROPMEMUや,遺伝的アルゴリズムによってROPチェーンを自動生成するツールroperのバックエンドとして用いられたり,Unicornと同じように注目を集めているバイナリ解析ツールangrとの連携が進められたりと,一大コミュニティを形成しつつある. コンセプトの説明はBlack Hat USA 2015の発表スライドに譲るとして,ここではその利用方法と内部実装に

  • イスラエルのサイバーセキュリティ事情 | 一生あとで読んでろ

    これはマルウェアに感染した端末の基板で構成されたトロイの木馬.国際会議Cyber Weekの展示の一環. はじめに 先週,イスラエル外務省からの招待でイスラエルのサイバーセキュリティ産業の視察に参加した. 視察の参加者は日政府・重要インフラ・セキュリティ業界関係に大別される.視察の目的は彼らにイスラエルの起業文化とサイバーセキュリティ技術を伝え,相互理解を図ることにあった.そんな視察になぜ一介のモラトリアム大学生でしかない私が潜り込めたのかというと,イスラエル外務省をハックしたから——というのは嘘.昨年発表したCODEBLUEというセキュリティカンファレンスのオーガナイザーにイスラエル大使館から打診があり,若者枠に組み込まれたという経緯である.なんと旅費はイスラエル外務省の負担. そういうわけで,記憶が錆びつかないうちに,イスラエルのサイバーセキュリティ事情を紹介したい. 総括 最初にま

    イスラエルのサイバーセキュリティ事情 | 一生あとで読んでろ
  • シンボリック実行に入門しようとした | 一生あとで読んでろ

    はじめにシンボリック実行(symbolic execution)という用語をセキュリティ系の論文でよく見かけるようになった.ここでは,シンボリック実行の基礎となる理論を辿る.筆者はソフトウェアテストの研究には疎く,おそらく稿には若干以上の誤謬と誤解が含まれているだろう.ぜひ識者の教示を乞いたい. 発祥シンボリック実行は主にソフトウェアテストの領域で古くから研究されてきたトピックである.シンボリック実行という用語の初出は遡ること38年前,James C. KingらによるSymbolic Execution and Program Testing [PDF]という論文だ.Dijkstraがgoto文の濫用による大域脱出を批判したのが1968年であり,Guarded Command Languageを提案したのが1975年のことである.この論文が発表された1976年当時はまさに構造化プログラ

  • __attribute__((constructor))が呼ばれる前に | 一生あとで読んでろ

    __libc_start_main()gccが内部で呼び出すldは,glibcの初期化を行うためにcrt*.oを静的リンクする.これによって,_start()などのシンボルがバイナリに埋め込まれることになる. ここで埋め込まれるシンボルには未定義なものが存在する.その一つとして,crt1.oに含まれる__libc_start_main()が挙げられる. これはmain()より先んじて呼び出される関数であり,暗黙的にcrt1.oがリンクの対象となる.しかし未定義であるがゆえに,先にソースコードに__libc_start_main()が宣言されていた場合,ldはこちらをシンボルとして採用してしまう. どちらが先か上記を踏まえて,次のコードではどちらの関数が先に呼び出されるだろうか.

  • 異なる仮想マシンモニタ間でのマイグレーションによるマルウェア解析の効率化 - ntddk

    class: middle ## **異なる仮想マシンモニタ間での マイグレーションによる マルウェア解析の効率化** #### [ntddk](http://ntddk.github.io/about) #### カーネル/VM探検隊出張版 in [セキュリティ・キャンプフォーラム2015](http://www.ipa.go.jp/jinzai/camp/2014/forum2015.html) 2015.02.14 --- # 目次 1. 背景 2. 研究目的 3. アンチサンドボックス 4. データフロー解析 5. 仮想マシンモニタの比較 6. 提案手法 7. 評価と考察 8. 今後の課題 9. まとめ 10. 参考文献 --- # 背景 #### 人間がマルウェアを解析しなければならない時代を終わらせたい * この世界にはマルウェアが多すぎる! - [2014年の新種マルウェアは

  • サンドボックスの透明性 | 一生あとで読んでろ

    VMI仮想マシンモニタからゲストのリソースを監視・制御する技術をVMI(Virtual Machine Introspection)という. その発祥は2003年に遡る.当時はハニーポットの研究が盛んな時期であり,VMIは仮想マシンにおける侵入検知を実現する手法として提案された.これはマルウェア解析の自動化に応用されており,仮想マシンモニタによるサンドボックスを構築し,VMIによってマルウェアの挙動を監視するというアプローチが一般的となっている. さて,VMIにおける問題点にセマンティックギャップというものがある.原義は高級言語とハードウェアとの乖離であるが,OSと同じ粒度で情報を取得することのできるゲスト内部(in-the-box)とハードウェアの粒度で情報を取得することしかできないゲスト外部(out-of-the-box)の乖離という意味でも援用される. Transparent San

  • マルウェア解析におけるRecord and Replayの設計 | 一生あとで読んでろ

    実マシンでは,ecx*word=6バイトが1回で書き換わるが,QEMUの動的バイナリ変換では2バイトずつ3回で書き換わる.そのため,1回目の書き換えで0xeb 0x01 0xa5すなわちjmp +01になってしまい,qemu_foundにジャンプしてしまう. その他には,ページ境界を越えてブロックの変換が行われた場合にページフォルトが発生してしまうことも考えられるし,ブロック境界でのみ割り込みが行われる,CPUサイクルの消費が著しいといった実マシンとの相違点もある. さらに問題なのが,フラグの遅延評価だ.例えば,cmpとjzの組み合わせなどの条件分岐は,EFLAGSを更新する.だが,QEMUにおいてはcmpが実行される段階でEFLAGSの計算は行われない.実際に計算されるのはjzの実行時,それも分岐を決定するためのZFのみが計算される.この設計はエミュレーションの高速化に寄与しているが,も

    マルウェア解析におけるRecord and Replayの設計 | 一生あとで読んでろ
  • 1