2015-07-01から1ヶ月間の記事一覧
x86環境においてHello Worldを表示するbootloaderを作成し、VirtualBoxの仮想フロッピードライブから起動してみる。 環境 Ubuntu 14.04.2 LTS 64bit版、VirtualBox 4.3.28 $ uname -a Linux vm-ubuntu64 3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:…
「Windowsで電卓を起動するシェルコードを書いてみる」では、Windows 32bitアプリケーション用のシェルコードを作成した。 ここでは、Windows 64bitアプリケーションから電卓を起動するシェルコードを書いてみる。 環境 Windows 8.1 Pro 64 bit版、Visual St…
Wiresharkには、Wiresharkと同等の機能を持つCLIコマンドとしてtsharkが付属している。 tsharkではオプションとして-T fields -e <field> [-e <field> ...]を指定することで、指定したフィールドのデータをタブ区切りで出力することができる。 次の例では、dump.pcapという</field></field>…
LoadLibrary関数は実行時にDLLをロードする関数であるが、引数にUNCパスを与えることにより、SMBプロトコル(Windowsファイル共有)を介してリモートホストにあるDLLをロードできることが知られている。 また、DLLはロード時にDLLMain関数が自動的に呼び出さ…
Metasploit Frameworkは、エクスプロイトコード実行をはじめとした種々のタスクを統一されたインタフェースで扱うための統合環境(フレームワーク)である。 ここでは、スタックバッファオーバーフロー脆弱性のあるプログラムを用意し、これに対するexploit…
主にWindows環境に対して使われる高機能なリモート操作コンソールとして、Meterpreterと呼ばれるものがある。 ここでは、Metasploit Frameworkを使いMeterpreter用のシェルコードを生成してみる。 さらに、スタックバッファオーバーフロー脆弱性を利用してこ…
スタックバッファオーバーフロー攻撃に対する防御手法のひとつにstack canaryがある。 これは関数の先頭でcanaryと呼ばれるランダムな値をスタックに積んでおき、関数の末尾でこの値が書き換えられていないかチェックすることで攻撃を検知するというものであ…
よく使いそうなものの覚書。 シンボルサーバの指定 環境変数を用いて指定しておくとよい。 >set _NT_SYMBOL_PATH=srv*C:\Symbols*http://msdl.microsoft.com/download/symbols デバッグ情報付きでコンパイル コンパイルオプションとして/Ziを付ける。 >cd /Z…
「WindowsでReturn-oriented Programming(ROP)によるDEP回避をやってみる」では、実行ファイル中でVitrualProtect関数が使われていることを前提にROPを行った。 ここでは、ASLRが無効な古いシステムDLLを利用することにより、VirtualProtect関数を呼び出し…
「Windowsで単純なスタックバッファオーバーフロー攻撃をやってみる」では、DEPを無効にした状態でシェルコードの実行を行った。 ここでは、DEPが有効な環境下において、ROP(Return-oriented Programming)によるシェルコード実行をやってみる。 環境 Windo…
Windowsで各種セキュリティ機構をオフにして、単純なスタックバッファオーバーフローによるシェルコード実行をやってみる。 環境 Windows 8.1 Pro 64 bit版、Visual Studio Community 2013 with Update 4 >systeminfo OS 名: Microsoft Windows 8.1 Pro OS …