シェルコード
リモート型シェルコードは、LANやインターネット上の別のマシンで動作する脆弱性のあるプロセスを対象として攻撃するものである。成功すると、攻撃者はネットワーク経由で対象マシンにアクセスできるようになる。リモート型シェルコードは通常、標準のTCP/IPソケットコネクションを使い、攻撃者が対象マシン上のシェルにアクセスできるようにする。このコネクションの構築方法としては、以下のものがある。
シェルコード自体がコネクションを確立する。シェルコードが攻撃者の使っているマシンに接続し返してくる (connects back) ため、このように呼ばれる。
多くのプロセスでは注入できるデータには制限(フィルター)があるため、シェルコードはその制限内で書く必要があり、それにはコードを小さくすること、ヌル文字を途中に含めないこと、英数字のみにすることなどが含まれる。このような制限に対処する方法はいくつかある。
設計と実装の最適化により、シェルコードを大きさを減らす。
シェルコードで使えるバイトの範囲の制限に対応するため、実装を修正する。
通常なら注入できないバイトのパターンを生成するため、自己書き換えコードを使う。
命令コードをネットワーク経由でそのまま送信するとセキュリティソフトによって検出されるため、自己解凍コードやポリモルフィックコードで符号化されることが多い。