WWW2Exec - atexit()
__atexit構造
現在はこれを悪用するのは非常に珍しいです!
atexit()
は、他の関数がパラメータとして渡される関数であり、これらの関数は**exit()
の実行時やmainのreturn時に実行されます。
これらの関数のアドレスを任意に変更して、例えばシェルコードを指すようにすることができれば、プロセスの制御を取得できますが、現在はこれがより複雑になっています。
現在、実行される関数へのアドレスはいくつかの構造体の背後に隠されており**、最終的にそれが指すアドレスは関数のアドレスではなく、XORとランダムキーで暗号化されています。そのため、現在、この攻撃ベクトルはx86およびx64_86ではあまり有用ではありません。
暗号化関数は**PTR_MANGLE
です。 m68k、mips32、mips64、aarch64、arm、hppaなどの他のアーキテクチャ**は、同じものを返すため、暗号化関数を実装していません。そのため、これらのアーキテクチャはこのベクトルによって攻撃される可能性があります。
これがどのように機能するかの詳細な説明は、https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.htmlで見つけることができます。
Last updated