2015-01-01から1年間の記事一覧

DockerでユーザモードQEMUによるARMエミュレーション環境を構築する

手元にx64マシンしかない状況でARM環境を用意しようとした場合、以下のような選択肢が考えられる。 実機を用意する(Raspberry Pi、Android端末など) お金がかかる、使うのに手間がかかる QEMUのシステムエミュレーションを使う 再現性が高い一方、重い QEM…

x64でuse-after-freeからのC++ vtable overwriteとheap sprayによるASLR+DEP回避をやってみる

「use-after-freeによるC++ vtable overwriteをやってみる」では、ASLRを無効にした条件下でシェル起動を行った。 ASLRが有効の場合、書き換えるvtableの関数ポインタが指すアドレスが推測可能でなければならないが、ヒープ領域に任意の数のオブジェクトを生…

Certificate pinningの実装におけるPrivate trust anchorの判定について調べてみる

Web

Lenovoのコンシューマ向けPCにプリインストールされたSuperfishと呼ばれるアプリケーションが、システムに独自のルート証明書をインストールしSSL MITM(Man-in-the-Middle)を行っていたことが発覚し、話題になっている(Lenovoによるプレスリリース)。 こ…

GNU Screenでscreenの中のscreenを操作しやすくする

たとえば、ローカルで起動したscreenの中でSSH接続を行い、接続先のサーバで起動したscreenを操作したいとする。 前者のscreenを外側、後者のscreenを内側としたとき、内側のscreenで新しいウィンドウを開くには、一旦C-a a (meta) で内側のscreenにC-aを送…

Hacker's Manifesto (Phrack 7)

http://phrack.org/issues/7/3.html なんとなく興味を惹かれたので雑に訳した。誤訳があるかも。 以下は自身の逮捕後まもなくして書かれた…… ハッカーの良心 by The Mentor 1986年1月8日 また一人今日捕まった、どの新聞にも載っている。 「コンピュータ犯罪…

OpenSSLで雑にCAを構築する

CA.shやopenssl.cnfに触らずにCA証明書を作って署名する方法のメモ。 なお、きちんとした運用が必要な場面では参考にすべきでない。 話を単純にするため、以下で用いる公開鍵アルゴリズムはすべてRSA 2048 bitとする。 CA証明書の作成 自己署名証明書を作る…

restfulを作った

https://github.com/inaz2/restful HTTPのGETメソッドでダウンロード、PUTメソッドでアップロード、DELETEメソッドで削除できるRESTfulなファイルアップローダ。 プライベートでの利用を想定しており、自己署名証明書を用いたHTTPSで暗号化の上、Basic認証を…

proxy2を作った

https://github.com/inaz2/proxy2 Pythonの標準モジュールだけで動くHTTP/HTTPSプロクシサーバ。 SimpleHTTPProxyの実装がいまいちなので作り直した。 IPv6、HTTP/1.1 Persistent Connection、Content-Encoding復号、OpenSSLによる証明書の動的生成に対応。 …

catコマンドを実装してみる

Haskellの練習として、catコマンドを実装してみる。 getConentsを使う もっとも簡潔な実装。 -- cat1.hs main = getContents >>= putStr do記法を使って書くと次のようになる。 main = do x <- getContents putStr x 上のコードは下と同値である。 main = ge…

ファイルやバッファをメニューから選択する

通常Emacsでファイルやバッファを開く際は、C-x C-fやC-x bを押した後Tab補完を行いながら文字を入力する。 しかし、何度も行う場合この方法はいささか煩雑なため、できるだけ楽に選択できるようにしたい。 ido-modeやhelm (anything)を使うことでインタラク…