NENote of Exploiting


2007-03-06 : The Basics of Shellcoding

 Security Docsのレポートのひとつです。シェルコードの基礎について記述されています。
 シェルコード開発のプロセスをwriteシステムコールを用いて簡単に解説していますが、ここに書かれた知識だけではシェルコードを開発することは難しいと思われます。
 開発プロセス自体は本来のシェルコードの開発プロセスと言えますので、シェルコード開発のテクニックを別に仕入れれば有用性があると考えられます。

 このレポートで特筆するべき点は文字列の生成です。文字列の生成方法が変わっていて、興味深いです。


push $0x47524f2e #push GRO. into the stack
push $0x4f4c4c45 #push OLLE into the stack
push $0x49534f52 #push ISOR into the stack
push $0x2e575757 #push .WWW into the stack
mov %esp, %ecx # it moves %esp into %ecx

 1セグメント化にjmp/callトリックを使わず、スタック上に文字列を生成するというのは面白いですね。問題はIntelのx86アーキテクチャは4バイトを1ワードとして扱うため、4の倍数の文字列しか生成できないことです。「/bin/sh」の場合は「/bin//sh」でもシェルが起動するため、この方法は非常に有効だと言えます。

 全体的にアセンブリ言語についての解説が薄いため、全体としてみた場合、中途半端な解説で終わってしまっているように感じられます。

References

Copyleft (C) 2007 Len. All Rights Not Reserved.