nmapによるネットワーク探索のメモ

ネットワークスキャナnmapでいろいろ探す方法のメモ。 自身が管理するIPアドレス、ドメイン以外へのスキャンは攻撃とみなされる場合があることに注意。 IPv4ホストを探索する -nはDNS逆引きの無効化、-snはポートスキャンしない。 # nmap -n -sn 192.168.0.0…

「Abusing Interrupts for Reliable Windows Kernel Exploitation」というタイトルで発表した

AVTOKYO2015 - AVTOKYO JP 昨年に引き続き、AVTOKYOで発表した。 Abusing Interrupts for Reliable Windows Kernel Exploitation (ja) from inaz2 Also English version is available. カーネルエクスプロイトでIDTを利用する手法自体はすでに知られているも…

WindowsでIDT overwriteによる権限昇格をやってみる

「Windowsでデバイスドライバの脆弱性からの権限昇格をやってみる」では、HalDispatchTableの書き換えを行うことでシェルコードの実行を行った。 しかし、HalDispatchTableやその中のポインタを呼び出す関数の実装はOSのメジャーアップデートなどで変更され…

Metasploitを使ってconnect-back shellを起動するWord文書を作ってみる

「電卓を起動するWord文書を作ってみる」では、簡単なVBAマクロを使って電卓を起動するWord文書を作成した。 VBAマクロではWin32 APIを呼ぶことができるため、任意のシェルコードを実行するマクロを書くことができる。 ここでは、Metasploit Frameworkを使っ…

Cygwinから管理者権限でプログラムを実行する

Cygwinから管理者権限でプログラムを実行する方法のメモ。 たとえばCygwin付属のpingコマンドは、ターミナル(minttyなど)が管理者権限で動作していない場合エラーとなってしまう。 $ ping localhost ping: socket: Operation not permitted このような場合…

ROP検知手法RAPについてまとめてみる

先日、PaX Teamが公表したROP(Return-oriented Programming)検知手法RAPについてまとめてみる。 RAP: RIP ROP (H2HC 2015) 用語に重複がありまぎらわしいが、論文ではReturn Address ProtectionおよびIndirect Control Transfer Protectionの二つの手法を…

電卓を起動するWord文書を作ってみる

Word 2013を使い、VBAマクロで電卓を起動するWord文書を作成する方法のメモ。 まず、オプションの「リボンのユーザー設定」で「開発」タブを表示するようにしておく。 次に、適当なWord文書を作成し、「開発」→「Visual Basic」を選択する。 そして、「Proje…

Cookie InjectionによるHTTPSハイジャックについて調べてみる

Web

中間者攻撃のもとでのCookie InjectionによるHTTPSの盗聴・ハイジャックについて、次のようなアナウンスが出ている。 Vulnerability Note VU#804060 - Cookies set via HTTP requests may be used to bypass HTTPS and reveal private information JVNVU#929…

WindowsでNulling out ACLs Shellcodeによる権限昇格をやってみる

「Windowsでデバイスドライバの脆弱性からの権限昇格をやってみる」では、SystemプロセスのTokenを自身のプロセスのTokenにコピーするシェルコードを使って権限昇格を行った。 この方法のほかに、System権限で動作するプロセスのACL(Access Control List)…

Windowsでデバイスドライバの脆弱性からの権限昇格をやってみる

Windowsにおいて、任意アドレス書き換え(arbitrary address write)の脆弱性があるデバイスドライバを作り、この脆弱性を利用した権限昇格をやってみる。 環境 Windows 8.1 Enterprise Evaluation 32 bit版、Visual Studio Community 2015 >systeminfo OS N…

kd/WinDbgでVirtualBox上のWindowsをカーネルデバッグする

VirtualBoxの仮想マシン上で動いているWindowsをkd/WinDbgでカーネルデバッグしてみる。 環境 VirtualBox 4.3.28 >kd /version kd version 6.3.9600.17298 仮想マシンのシリアルポートを有効にする 仮想マシンの設定からシリアルポートを選び、「ポート1」を…

Windowsで簡単なデバイスドライバを書いてみる

VirtualBox上の仮想マシンにWindowsデバイスドライバの開発環境を構築し、簡単なデバイスドライバの作成とロードをやってみる。 環境 VirtualBox 4.3.28 開発用のWindows VMを用意する デバイスドライバの開発ではたびたび再起動が必要となるため、VirtualBo…

「WinDbg Primer」というタイトルで発表した

すみだセキュリティ勉強会2015#2 - すみだセキュリティ勉強会 WinDbgの使い方の紹介と、簡単なデバッグのデモを行った。 WinDbg Primer from inaz2 WinDbgはコマンドラインベースで操作でき、Windows環境におけるGDBのように使えて便利という話をした。 そこ…

x86 bootloaderから簡単なOSカーネルを動かしてみる

「x86 bootloaderでHello Worldを書いてみる」では、リアルモード(16ビット)で動作する簡単なbootloaderを書いてみた。 ここでは、CPUの動作モードをプロテクテッドモード(32ビット)に切り替え、C言語コードからコンパイルした簡単なOSカーネルを動作さ…

VirtualBoxにKali Linux 2.0をインストールする

「VirtualBoxにKali Linux 1.0.6をインストールする」の2.0版。 仮想マシンを作成する 仮想マシンを作成し、仮想マシン設定の「システム」→「プロセッサー」から「PAE/NXを有効化」にチェックを入れておく。 さらに、ホストOSからゲストOSへの通信を行えるよ…

Linux x64でDynamic ROPによるシェルコード実行をやってみる

ASLR+DEP+FullRELROが有効な環境で、Dynamic ROP(JIT-ROP)により任意のシェルコードを実行してみる。 これは、セキュリティ・キャンプ全国大会2015の講義にて行った演習に若干の修正を加えたものである。 環境 Ubuntu Server 14.04.2 64bit版 $ uname -a L…

Windows 8 キーボードショートカットのメモ

よく使うものをまとめてみる。 Keyboard shortcuts - Windows Help Mouse and keyboard: What's new in Windows - Windows Help 何か設定したい Win+XでQuick Linkメニューが表示され、いろいろな設定画面が開ける。 管理者権限でコマンドプロンプトを開く、…

WindowsでEMETを回避するシェルコードを書いてみる

「Windowsで電卓を起動するシェルコードを書いてみる」では、32ビットのWindows環境で動作するシェルコードを書いた。 ここでは、Microsoftが提供する脆弱性緩和ツールEMET(Enhanced Mitigation Experience Toolkit)の検知機構を回避するシェルコードを書…

Windows x64でReturn-oriented Programming(ROP)によるDEP回避をやってみる

「WindowsでReturn-oriented Programming(ROP)によるDEP回避をやってみる」では、Windows 32ビット環境でROPによるDEP回避を行った。 ここでは、Windows 64ビット環境でのROPをやってみる。 環境 Windows 8.1 Pro 64 bit版、Visual Studio Community 2013 …

IAT書き換えによるAPIフックをやってみる

「CreateRemoteThread関数によるDLLインジェクションをやってみる」では、DLLを他のプロセスに読み込ませることにより他プロセス内でのコード実行を行った。 DLLインジェクションの応用のひとつに、他プロセスにおけるAPIフックがある。 これは、プロセスと…

CreateRemoteThread関数によるDLLインジェクションをやってみる

Windowsにおいて、キーロガーなどが自身のプロセスを隠蔽する手法にDLLインジェクションがある。 これは、プログラムをDLLとして作成し、他のプロセスに読み込ませることで実行するというものである。 ここでは、CreateRemoteThread関数を使ったDLLインジェ…

Windowsでdownload-execシェルコードを書いてみる

「Windowsでconnect-backシェルコードを書いてみる」ではプログラムがWinsockを利用していることを前提に、connect-back shellを起動するシェルコードを書いた。 この他に、Windowsではインターネットから実行ファイルをダウンロードし実行するシェルコード…

x86 bootloaderでHello Worldを書いてみる

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 x64で電卓を起動するシェルコードを書いてみる

「Windowsで電卓を起動するシェルコードを書いてみる」では、Windows 32bitアプリケーション用のシェルコードを作成した。 ここでは、Windows 64bitアプリケーションから電卓を起動するシェルコードを書いてみる。 環境 Windows 8.1 Pro 64 bit版、Visual St…

tsharkでpcapファイルからHTTP情報を抽出する

Wiresharkには、Wiresharkと同等の機能を持つCLIコマンドとしてtsharkが付属している。 tsharkではオプションとして-T fields -e <field> [-e <field> ...]を指定することで、指定したフィールドのデータをタブ区切りで出力することができる。 次の例では、dump.pcapという</field></field>…

WindowsでUNC LoadLibraryによる任意コード実行をやってみる

LoadLibrary関数は実行時にDLLをロードする関数であるが、引数にUNCパスを与えることにより、SMBプロトコル(Windowsファイル共有)を介してリモートホストにあるDLLをロードできることが知られている。 また、DLLはロード時にDLLMain関数が自動的に呼び出さ…

Metasploitのexploitモジュールを書いてみる

Metasploit Frameworkは、エクスプロイトコード実行をはじめとした種々のタスクを統一されたインタフェースで扱うための統合環境(フレームワーク)である。 ここでは、スタックバッファオーバーフロー脆弱性のあるプログラムを用意し、これに対するexploit…

Windowsでスタックバッファオーバーフロー脆弱性からMeterpreterに接続してみる

主にWindows環境に対して使われる高機能なリモート操作コンソールとして、Meterpreterと呼ばれるものがある。 ここでは、Metasploit Frameworkを使いMeterpreter用のシェルコードを生成してみる。 さらに、スタックバッファオーバーフロー脆弱性を利用してこ…

WindowsでSEH overwriteによるstack canary(/GS)回避をやってみる

スタックバッファオーバーフロー攻撃に対する防御手法のひとつにstack canaryがある。 これは関数の先頭でcanaryと呼ばれるランダムな値をスタックに積んでおき、関数の末尾でこの値が書き換えられていないかチェックすることで攻撃を検知するというものであ…

cdb/Windbgの使い方のメモ

よく使いそうなものの覚書。 シンボルサーバの指定 環境変数を用いて指定しておくとよい。 >set _NT_SYMBOL_PATH=srv*C:\Symbols*http://msdl.microsoft.com/download/symbols デバッグ情報付きでコンパイル コンパイルオプションとして/Ziを付ける。 >cd /Z…