d.hatena.ne.jp[B!]新着記事・評価 - はてなブックマーク (original) (raw)

3 users
d.hatena.ne.jp/kenjiaiko
はじめてslideshare使ってみた

25 users
d.hatena.ne.jp/kenjiaiko
マイナーかもしれないけど、HTTP Request Smuggling(通称HRS)という攻撃手法があります。詳しくはWizardBible vol.19の金床氏のHRS記事を参照。そして、それに関連して、IIS/5.0の48kbバグ(仕様?)というものがありまして、簡単に言うと、IIS/5.0は、Content-Typeヘッダが無い48kb以上のボディ部を持つHTTPリクエストに対して、無条件にボディ部を48kbに決めつけるというものです(以下、WizardBible vol.19のHRS記事から引用)。 IIS/5.0にはとてもわけのわからないバグがあるようで、48kb以上のボディ部を持ち、かつContent-Typeヘッダーフィールドが無いHTTPリクエストは、無条件にボディ部を48kbちょうどと決めつけてしまうようです。 ちなみにIIS/5.1も5.0同様48kb決めうちを行います

9 users
d.hatena.ne.jp/kenjiaiko
JavaScriptのXMLHttpRequestでのクロスドメイン制限を回避できるなら、iアプリはどうなんだろう? ということで試してみた。ちなみにDocomoのiアプリは「制限したHTTP通信」をサポートしており、一応HTTPが扱えるが、携帯電話にダウンロードされたiアプリは、ダウンロード元のサーバへしかHTTP通信できない、また、HTTP以外の通信をサポートしない、という制限がある。 参考:Doja HttpConnection 「ダウンロード元のサーバへしかHTTP通信できない」という点においてJavaScript(Ajax?)と似ている。結果から言うと、iアプリもDNS Rebindingでダウンロード元以外のサーバへアクセス可能だと判明。 mydomain.comのIPアドレスを1.2.3.4にセット(1.2.3.4は自分が管理するサーバ) mydomain.com(1.2.3

8 users
d.hatena.ne.jp/kenjiaiko
iモードブラウザ2.0でJavaScriptが本格的に有効になったので、XMLHttpRequestを使ってサーバと通信可能になった(2009年8月辺り?) DNS RebindingでJavaScriptのクロスドメイン制限が突破可能だと判明(2009年11月) iモード専用サイトのhtmlソースの閲覧方法 iモードIDはguid=ONをURLの末尾につけることでサーバへ転送されるため、iモードIDで「かんたんログイン」していると「なりすまし」の可能性あり(2010年2月) iモードIDを用いた「かんたんログイン」のDNS Rebinding脆弱性 [対策1] DNS RebindingするとHTTPリクエストのHostが本来のホスト名にならないため、バーチャルホストで運用すればOK [対策2] そもそもCGI側でHostを確認して、自ホスト以外なら弾くコードを追加すればOK?

3 users
d.hatena.ne.jp/kenjiaiko
http://d.hatena.ne.jp/rootkit/20080818/1219042285 ベスト71〜80に説明つけてみた(間違いあるかも…) 22341 ds セグメントオーバーライドプリフィックス(データセグメント) 21736 jp PF=1 PFが1ならジャンプ(JPEとも書く) 21175 fnstsw FSTフラグをオペランドへ転送(FSTSWとも書く) 20458 not 1の補数、要するにビット反転命令 19998 cs セグメントオーバーライドプリフィックス(コードセグメント) 19554 fild 符号付き整数を浮動小数点数に変換しst0へ格納 18972 lock 割り込み禁止に設定 18866 sete ZFフラグの値をオペランドへ格納 18297 setne ZFフラグと逆の値をオペランドへ格納 18055 lods メモリの内容をEAXに読み込みESI

3 users
d.hatena.ne.jp/kenjiaiko
http://d.hatena.ne.jp/rootkit/20080818/1219042285 ベスト61〜70に説明つけてみた(間違いあるかも…) 37928 repz repと同じだが、次の命令が転送命令ならrepを比較命令ならrepzを使うのが一般的らしい 36217 out 外部デバイスの入出力ポートへデータを送る(outsのパワーダウン版?) 34432 cdq EAXレジスタを符号付き整数としてEDX:EAXに型変換する 33914 movsx 基本的に16ビット版mov(メモリ上の16ビット以下のデータを転送する) 30026 pusha 全レジスタの値をスタックへ格納する 28262 fadd 浮動小数点演算での足し算(st0と渡されたオペランドが足される) 27495 rol 左方向へのローテート(CFは含まれない) 24020 aas アンパックBCDの減算結果AL

3 users
d.hatena.ne.jp/kenjiaiko
http://d.hatena.ne.jp/rootkit/20080818/1219042285 ベスト51〜60に説明つけてみた(間違いあるかも…) 62273 stos EAXの値をES:EDIの指すメモリへ格納する(REPと組み合わせることで初期化処理になる) 60421 jns SF=0 マイナスじゃないならジャンプ 58573 movq MMXレジスタで使われるmovで64ビット転送に使用する(最適化とかそういう話) 58422 fmul 浮動小数点演算での掛け算(st0と渡されたオペランドが掛けられる) 53800 jg ZF=0 && SF=OF 符号ありで、大きいならジャンプ 50155 movaps XMMレジスタで使われるmovで128ビット転送に使用する(これも最適化とかそういう話) 45608 sar 符号ありで右シフト(シフト系は符号のありなしで少し複雑) 45

3 users
d.hatena.ne.jp/kenjiaiko
http://d.hatena.ne.jp/rootkit/20080818/1219042285 ベスト41〜50に説明つけてみた(間違いあるかも…) 113117 jo OF=1 オーバーフローしたらジャンプ 111416 jle ZF=1 or SF!=OF (符号あり)以下ならジャンプ 111125 shl 左方向にシフト(C言語でいう << ←これ) 104434 fstp st0レジスタからデータを取得(浮動小数点系の演算でよく使われる) 103882 rep ECXが0になるまで次の命令を繰り返す(比較命令時はZFフラグも見る) 91023 xchg 2つのオペランドを交換する(xchg eax, ebxでeaxとebxの値が交換される) 74925 addr16 ? 72425 fs ? 71879 neg 2の補数値にする(符号ありの値に対して、符号を反転させる) 631

3 users
d.hatena.ne.jp/kenjiaiko
http://d.hatena.ne.jp/rootkit/20080818/1219042285 ベスト21〜40に説明つけてみた(間違いあるかも…) 416677 outs 外部デバイスの入出力ポートへデータを送る(repと組み合わせて使おう) 393871 jb CF=1 符号なしで、小さいならジャンプ 362616 (bad) 解析できなかった命令? 311007 imul 符号ありの乗算(掛け算)EAXと渡された値を掛けてEDX:EAXへ入れる 295376 ins 外部デバイスの入出力ポートからデータを受け取る(repと組み合わせて使おう) 290626 jl SF!=OF 符号あり(マイナスの数値あり)で、小さいならジャンプ 249056 jae CF=0 符号なし(0が最小値)で、以上ならジャンプ 220561 leave retの前に置かれるもの("mov esp, eb

6 users
d.hatena.ne.jp/kenjiaiko
せっかく32ビット素数表を作ったので、factorコマンドに素因数分解勝負を挑んでみた。ちなみに、factorコマンドとは、Linuxに標準でついている素因数分解プログラムです。Linuxに標準でついてるくらいなので、多分アルゴリズム的にかなり速い素因数分解ができる(ハズだと思います)。 # time factor 18446744073709551615 18446744073709551615: 3 5 17 257 641 65537 6700417 real 0m0.001s user 0m0.000s sys 0m0.000s # こんな風に、64ビット最大値の18446744073709551615を、わずか0.001秒で素因数分解します。ただし、素数の値が大きくなると、低速になります。 # time factor 18446744073709551609 1844674407

8 users
d.hatena.ne.jp/kenjiaiko
http://www.nicovideo.jp/watch/sm3944175 名言の解釈パターンが様々だったので調べてみた。あと、言葉にはこういうあいまいさがあるから翻訳をプログラミングできないんだろうなぁと人間の脳のすごさを改めて実感してみたり。 善意を持つのはいいが、行動(善行)しなければ結局は何も変わらないぞ(地獄行きだぞ)、という「行動が重要」という解釈 悪い奴らはいつだって笑顔で(善意であるかのように)お前に近寄ってくるぞ、という「うまい話には裏がある」という解釈 良かれと思ってやっていることも、結果的に相手にとって悪いことになったりもするぞ、という「意図と結果が異なることもあるぞ」という解釈 自分がどんなに不幸だと感じても、それに至るまでには数多くの人の助けがあったはずだ、という「結局は誰でもない自分の責任だ」という解釈 解釈の答えは誰でもないキミの心の中にある、という「それ

5 users
d.hatena.ne.jp/kenjiaiko
ATDE:http://armadillo.atmark-techno.com/downloads ATDEはArmadilloシリーズの開発環境を提供するVMware仮想マシンのデータイメージです。イメージはLinuxデスクトップ環境をベースにGNUクロス開発ツールやその他の必要なツールが事前にインストールされています。 とのこと。 ダウンロードサイズは600MB程度、展開後は6GB近くなる。ユーザー:atmark、パスワード:atmarkでログイン可能。rootのパスワードはそのままrootでおk。このlinux環境の中にARM用のコンパイラが入っていますので、まずはそれでコンパイル。 $ cat > test.c #include <stdio.h> int main(void) { printf("Hello ARM\n"); return 0; } ^C(Ctrl+C) $ ar

3 users
d.hatena.ne.jp/kenjiaiko
http://kenjinet.s26.xrea.com/syssys.txt ↑NTDLL.DLLを抜けるまで呼び出し履歴を追ってみたもの。基本的にKERNEL32.DLLとかADVAPI32.DLLとかまで追うけど、関数呼び出しを再帰させてたりすると、最後まで追いきれないので、NTDLL.DLLでストップさせる場合アリ。 これでSYSENTERフックしたときに、どのAPIが呼び出されてSYSENTERまで来たのかが、なんとなくわかるw。でもあくまでなんとなくなので…、というか、予想以上に多種多様なAPI関数から呼ばれてて笑ってしまった。 とりあえず「実践投入できるかどうか?」が自分的に結構ポイントなのですが、これだと微妙だw。というわけで、さらなるアイディアを考え中。

40 users
d.hatena.ne.jp/kenjiaiko
OllyDbg Windowsで普通のアプリを動的解析したい! Stirling バイナリを直接編集したい! BZエディタ GB(ギガバイト)レベルのファイルのバイナリも楽に編集したい! IDAPro Free版 Windowsで静的解析がしたい! IDAPro Demo版 x86以外のCPUも解析したい!(ARMとか) WinDbg Windowsのカーネルみたり、ダンプファイルみたりしたい! もちろん普通のデバッガとしても使いたい。 jad javaのクラスファイルを逆コンパイルしたい! Reflector .NETの実行ファイルを逆コンパイルしたい! Flashデコンパイラ集 Flashを逆コンパイルしたい! radare 安定してないけどppcとかも解析したい! あとshellcodeも書きたい! nasm 64ビットも読みたい! あとは環境に合わせて…、例えばUNIX系ならgdb

3 users
d.hatena.ne.jp/kenjiaiko
Stoned Bootkit 2005年辺りに話題になったBootkitの進化版? OSの前に起動しハードウェアI/Oのint13hをフックして、TrueCryptを無効化するrootkit。研究内容としてはRing-3が面白かったけど、実用性ではこっちに軍配が上がる。 Sniff keystrokes with Lasers/Voltmeters ハードウェア系のキーロガーの話。レーザーやオシロスコープ(?)などを用いて、外からPS/2キーボードのログをキャプチャできないか? という感じの話(たぶん)。マシンによってノイズの量が異なり、EeePCは結構クリアでとりやすく、MacBookはノイズが多いとのこと。それにしても、こんなことを研究してた人がいたのか…。 Our Favorite XSS Filters and How to Attach Them スタンダードなものからマニアック

3 users
d.hatena.ne.jp/kenjiaiko
http://d.hatena.ne.jp/rootkit/20080818/1219042285 とりあえずベスト20に説明つけてみた 11378610 mov レジスタ値やメモリの値を転送 9156176 push スタックへ値を格納 3825704 add 値を加算(足し算) 3638244 call スタックに次の実行命令のアドレスを入れてジャンプ 2329166 int3 デバッグ用割り込み 2271495 pop スタックから値を取り出す 2105874 cmp 値を評価してフラグに反映 2000442 je ZF=1 同じならジャンプ 1920361 lea 説明しにくい。まぁ[]の中の計算結果がレジスタへ入ると覚えておけばおk 1673045 nop 何もしない 1495072 test フラグだけ変化するAND命令(真 or 偽 だけを判断する時によく使う) 142658

6 users
d.hatena.ne.jp/kenjiaiko
UbuntuのVMイメージ http://www.ubuntulinux.jp/products/GetUbuntu UbuntuのVMイメージをDL 初期設定(初回起動時の時間設定やユーザー作成など)を終える 適当な場所に適当な名前でディレクトリ作成 ディレクトリの中にMakefileとソースファイル作成 コンパイル(ビルド?)*1 .koファイルの出来上がり insmodでカーネルモジュールをロード rmmodでカーネルモジュールをアンロード dmesgで出力ログを確認 $ pwd /home/kenji/hello $ mkdir hello $ ls Examples テンプレート ドキュメント 音楽 公開 hello デスクトップ ビデオ 画像 $ cd hello $ cat >Makefile obj-m += hello.o $ cat >hello.c #include

18 users
d.hatena.ne.jp/kenjiaiko
現在自分が持っているマシンでもっともスペックが高いものがCore2Duo2.4のMacBookだったりするため、必然的にMacOSXを使う機会が多くなるので、最大限MacBookをメインマシンとして使えるように努力してみた。ちなみに別にMacOSXに心変わりしたわけではない。Windowsも変わらず大好きですよ。 1、まず買ったばかりのMacBookにはgccをはじめとした開発環境がデフォルトでインストールされていないので、付属のDVDから開発環境全般をインストール。エンジニアとしては、開発環境ついてないならWindowsと変わらない…。 2、次にVM(VirtualBox2)をインストール。個人的に他環境を使えることは必須なのでVMは必需品。VirtualBox2からMac版もブリッジ接続に対応したので、ゲストがホストと同じネットワークでいろいろ出来ます(ホストからゲストに対してsshで

8 users
d.hatena.ne.jp/kenjiaiko
まっちゃ445でも話題にあがったclickjacking。 ブラウザに透明なフレームを貼付けて、ユーザーに意図しないリンクをクリックさせる攻撃方法 http://www.planb-security.net/notclickjacking/iframetrick.html ソースコードは↓こんな感じ Real Clickjacking?