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

GRUBで簡単なOSカーネルを動かしてみる

「x86 bootloaderから簡単なOSカーネルを動かしてみる」では、bootloaderを作った上で簡単なOSカーネルを動かした。 ここでは、GRUBをbootloaderとして利用してOSカーネルを動かしてみる。 環境 Ubuntu 14.04.3 LTS 64bit版、QEMU 2.0.0 $ uname -a Linux vm…

GNU Emacs入門

Emacsの使い方についてまとめてみる。 CtrlとCapsLockの位置を入れ替える EmacsはCtrlキーの同時押しを頻繁に行うため、左Ctrlと左CapsLockの位置を入れ替えておくとよい。 Windowsであれば、Sysinternals Ctrl2capやChange Keyが使える。 インストール ここ…

JIT-ROP緩和手法Heisenbyteについてまとめてみる

この記事は「情報セキュリティ系論文紹介 Advent Calendar 2015」24日目の記事です。 JIT-ROP緩和手法として発表されたHeisenbyteについてまとめてみる。 Heisenbyte: Thwarting Memory Disclosure Attacks using Destructive Code Reads (ACM CCS 2015) tl;…

CBC modeに対するPadding oracle attackをやってみる

この記事は「脆弱性"&'<<>\ Advent Calendar 2015」23日目の記事です。 ブロック暗号モードのひとつであるCBC modeには、Padding oracle attackと呼ばれる攻撃手法が存在することが知られている。 これは、繰り返し復号を行うことができ、かつ復号の成否が観…

各種アーキテクチャのクロスコンパイラ環境を構築する

Docker上に作成したDebian 8環境にてbinutils、gcc、glibcをソースコードからビルドし、さまざまなアーキテクチャのクロスコンパイラ環境を構築してみる。 なお、構築した環境は次のDocker imageとして公開してある(イメージサイズが2.8GBと大きいことに注…

脆弱性テスト・学習用Webアプリケーションのメモ

Web

脆弱性スキャンツールのテストあるいは脆弱性内容の学習を目的として、意図的に脆弱性が作り込まれたWebアプリケーションをいろいろ調べた結果のメモ。 Badstore Badstore: 1.2.3 ~ VulnHub Last update: 2004-02-24 (1.2.3) この手のアプリケーションの元祖…

qemu-debootstrapを使ってユーザモードQEMUで動くDockerイメージを作ってみる

「DockerでユーザモードQEMUによるARMエミュレーション環境を構築する」では、mazzolino/armhf-ubuntuというDockerイメージを使ってqemu-user-staticによるARM版Ubuntuのエミュレーション環境を構築した。 ここでは、qemu-debootstrapを使ってARM版DebianのD…

gdbを使っていい感じにプロセスツリーを手元の端末に繋ぎ変えるシェルスクリプト

次のエントリにあるように、gdbを使うとプロセスの標準入出力を別の端末(tty)に繋ぎ変えることができる。 コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ しかし実際にはあるプロセスからサブプロセスが複数呼ばれている状況…

x86/x86-64/ARM/AArch64/PowerPC/PowerPC64のアセンブリコードを読んでみる

簡単なC言語コードを各アーキテクチャ向けにコンパイルした結果のメモを兼ねて、アセンブリコードを読んでみる。 環境 Ubuntu 14.04.2 LTS 64bit版 $ uname -a Linux vm-ubuntu64 3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015 x86_64 x86…

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インジェ…