2015-04-01から1ヶ月間の記事一覧

Windowsでconnect-backシェルコードを書いてみる

「Windowsで電卓を起動するシェルコードを書いてみる」ではPEBからライブラリ関数のアドレスを特定し、WinExec関数を使って電卓を起動するシェルコードを書いた。 ここでは、プログラムがWinsockを利用していることを前提に、connect-back shellを起動するシ…

Windowsで電卓を起動するシェルコードを書いてみる

「Windowsで電卓を起動するアセンブリコードを書いてみる」では呼び出すライブラリ関数のアドレスをハードコードした形でアセンブリコードを書いたが、ASLRが有効なDLLについてはDLLが読み込まれるたびにベースアドレスが変化するため常には機能しない。 こ…

PowerShellでnc(netcat)を書いてみる

多くのLinuxディストリビューションでは標準でncコマンドが入っており、リモートホストへの接続あるいはローカルポートでの待ち受けを行い、端末からネットワークソケットに対し読み書きすることができた。 一方Windowsの場合、前者はtelnetコマンドで代用す…

PowerShellで正規表現フィルタを書いてみる

Windowsにおいて標準で利用できるスクリプト環境としては古くからWindows Scripting Host(WSH)があるが、Windows 7以降ではこれに加えPowerShellと呼ばれるシェルが利用できる。 また、WSHでJScriptまたはVBScriptのもとでCOMコンポーネントを扱えたように…

Windowsで電卓を起動するアセンブリコードを書いてみる

限定的な環境において電卓を起動するアセンブリコードを書き、シェルコードとして実行してみる。 環境 Windows 8.1 Pro 64 bit版、Visual Studio Community 2013 with Update 4 >systeminfo OS 名: Microsoft Windows 8.1 Pro OS バージョン: 6.3.9600 N/A …

Windowsの開発環境を構築し、コンパイル・デバッグをやってみる

WindowsでVisual Studio Community 2013とDebugger Tools for Windowsをインストールし、コンパイラ一式とデバッガを使えるようにする。 また、簡単なC言語コードを書き、コマンドラインからのコンパイルとデバッグをやってみる。 環境 Windows 8.1 Pro 64ビ…

Kprobesで実行可能メモリの読み出しを検知してみる

Dynamic ROP(JIT-ROP)はlibcなどの実行可能メモリを読み出し、その中にあるgadgetを利用することでROPを行う。 これに対し、「x64で実行可能なメモリアドレスに対する入出力システムコールを検知してみる」では、ptraceでreadシステムコールを監視すること…