Melakukan Decode Pada Backdoor PHP Dengan Teknik Manipulasi "eval"
saya menyebutnya "eval-trap". jadi begini ceritanya ...,
ada wp kena hack, hacknya lewat plugin. plugin gallery, yg memungkinkan pelaku upload (backdoor-)shell ke server.
backdoor itu, di encode pake rot13 dan base64 (hmm.., kurang ngreget deh) kemudian decode lalu di eval. fn decodenya (rot13,base64) diakses dengan cara "variable variables" ($$). yg tentunya juga di eval.
jadinya saya penasaran...,
isinya itu seperti apa...,
saya coba deh, decode tu backdoor.
manual decode...,
awalnya saya coba manual decode. tapi, aduhh, malas sekali. karena terlalu banyak looping (ada sekitar ~10x loop).
karena ini pertama kali menghadapi hal seperti ini, mau saya coba jalankan di localhost, tapi was-was. akhirnya buat docker untuk mengisolasi skrip (jadi pc saya tidak di expose sama tu backdoor).
oke, docker jadi, pake php5 dan apache.
langkah pertama yg saya lakukan adalah, mocking pakai namespace untuk fungsi ro13 dan base64.
sayangnya saya tidak bisa mocking eval, karena eval adalah "language construct" php.
jadinya setiap ada eval, saya replace dengan fake-eval.
sayangnya, karena eval adalah language construct, jadi "variables scope" tidak berlaku.
oke. mikir.
terlintas dipikiran saya untuk mocking variables yg terdefinisi juga.
oleh skrip yg saya buat, tiap kali ada global variables yg didefinisi (didalan fake-eval), didefinisikan ulang ke global variables.
berhasil.
eval-trap berhasil menampilkan laman backdoor. oke, sekarang, cari cara menghentikan loop sebelum skrip utama backdoor di eval.
dan ya, untuk melakukannya cukup mudah.
akhirnya. saya berhasil menampilkan sourcecode dari backdoor tersebut.
ada wp kena hack, hacknya lewat plugin. plugin gallery, yg memungkinkan pelaku upload (backdoor-)shell ke server.
backdoor itu, di encode pake rot13 dan base64 (hmm.., kurang ngreget deh) kemudian decode lalu di eval. fn decodenya (rot13,base64) diakses dengan cara "variable variables" ($$). yg tentunya juga di eval.
jadinya saya penasaran...,
isinya itu seperti apa...,
saya coba deh, decode tu backdoor.
manual decode...,
awalnya saya coba manual decode. tapi, aduhh, malas sekali. karena terlalu banyak looping (ada sekitar ~10x loop).
karena ini pertama kali menghadapi hal seperti ini, mau saya coba jalankan di localhost, tapi was-was. akhirnya buat docker untuk mengisolasi skrip (jadi pc saya tidak di expose sama tu backdoor).
oke, docker jadi, pake php5 dan apache.
langkah pertama yg saya lakukan adalah, mocking pakai namespace untuk fungsi ro13 dan base64.
sayangnya saya tidak bisa mocking eval, karena eval adalah "language construct" php.
jadinya setiap ada eval, saya replace dengan fake-eval.
sayangnya, karena eval adalah language construct, jadi "variables scope" tidak berlaku.
oke. mikir.
terlintas dipikiran saya untuk mocking variables yg terdefinisi juga.
oleh skrip yg saya buat, tiap kali ada global variables yg didefinisi (didalan fake-eval), didefinisikan ulang ke global variables.
berhasil.
eval-trap berhasil menampilkan laman backdoor. oke, sekarang, cari cara menghentikan loop sebelum skrip utama backdoor di eval.
dan ya, untuk melakukannya cukup mudah.
akhirnya. saya berhasil menampilkan sourcecode dari backdoor tersebut.
Komentar
Posting Komentar
Komentar ...