Evalhook-0.1 by Stefan Esser
Данная статья описывает
мощный инструмент для деобфускации (расшифровки) php-скриптов от всем известного
Stefan Esser
Сам инструмент представляет из себя PHP extension, с помощью которого можно поэтапно выполнять скрипт и,
тем самым, посмотреть, что собственно скрипт делает и как результат добраться до исходного кода скрипта.
Данный инструмент прерывает вызов eval() и
других dynamic PHP code evaluation functions -
т.е. распознает,например, даже попытку выполнить такой код:
PHP код:
<?php
array_map('assert', array('phpinfo()'));
?>
выводит, что возвратит такой код и дальше предложит выполнить его (y/n):
Цитата:
Script tries to evaluate the following string.
----
return phpinfo() ;
----
Do you want to allow execution? [y/N]
|
также легко расшифрует скрипт, написанный выше, но уже обфусцированный:
PHP код:
<?php
/* Demo by www.php-crypt.com */
$keystroke1 = base64_decode("d2RyMTU5c3E0YXllejd4Y2duZl90djhubHVrNmpoYmlvMzJtcA==");
eval(gzinflate(base64_decode('hY69DsIgFIVf5QwMENGUuWH0QZTeKrFekgsMxvTdLWlqTBfX8/uNlUOJiSGpEIc0kFa5SOSbVZdnqlwM3lAPesEj1+vifQPoLJzpEUe9KBPx5hjvXasJlSqMcBedZNBtxeCAbbjHDJoy/U/i1PjOK9+ewlns7o/O2N+X+QM=')));
$O0O0O0O0O0O0=$keystroke1[2].$keystroke1[32].$keystroke1[20].$keystroke1[11].$keystroke1[23].$keystroke1[15].$keystroke1[32].$keystroke1[1].$keystroke1[11];
$keystroke2 = $O0O0O0O0O0O0("└q>BF─~An├r┤D┘pt{sl│┐E{y┌xCwuov|@?z}", -13);
$OO000OO000OO=$keystroke2[16].$keystroke2[12].$keystroke2[31].$keystroke2[23].$keystroke2[18].$keystroke2[24].$keystroke2[9].$keystroke2[20].$keystroke2[11];
$O0000000000O=$keystroke1[30].$keystroke1[9].$keystroke1[6].$keystroke1[11].$keystroke1[27].$keystroke1[8].$keystroke1[19].$keystroke1[1].$keystroke1[11].$keystroke1[15].$keystroke1[32].$keystroke1[1].$keystroke1[11];
eval($OO000OO000OO(base64_decode('Lc23rq
NaAEDRnxlp7hUFYLJGU2ByMNmkZkSO5hDMMfD17x
av2eXaFczGr1+2jWHY//nKs62iyX9lVYCy+vptlg
axzgfPS6I3MerAYd5dkVt+bGDiym3jB5C32oQS+x
GF4Y3cS2LO10W5ysrBya3pHJTqNm2G5R0d+mAfYP
DDpbVrEU7TicV6z+LS490Ae7sMDKLIBYsXbFEuTF
NHJlT+MQf8U8uz2nQVn4lkCk78WSsFAhY6ZdIXG2
3JPRfTZAaflZ/1bYd8K6/McWoymtgC680hU1A2Fx
vygxrZuuh7NqxsrNotN6ajdHmX6qBmT5hMY4vKIA
5hufvMomELb6I388QnrxqvQxAfMfkEYOGRE5iqFK
5NQBXFwPZ7Z69LVb1OCLuwJLp4qkpjN6RF3V+lgp
tbjG2wAhopV3Ta8UMSP6FuK7tJMf0hBl6YU3ssFV
MoH5cG7o7VsBOYw0dW28DUnXw1QEA7rWmfYMb35R
D0t/BkDkMnAedt2sFwedA7M+GHkmZNTVCz6YpNfN
aqENLOgz8wh5gY+sIzSt9nnegmo8yMt+25bPazpw
W8rfq7JgkJXKxPd3qYcV6kOHvqx/FwKbG6xcxlSx
Ks+0yF4vvx7mMfQW8np/PGwvLXZIiuQnR0nfcAil
mpa3TY2pvtkmds9hFfQ5sYCh1KnJDmbYj3zZM1AT
n7BlS8z9UID8LY0WB4Ruexu1GBLvfA84li9MaHHb
wyq5omnBlqXjkhhyG+kNm+inhAF5dm86ZiMs2eE8
4TCjozZbPmo37Q0etjqaNtjDw07YHPzkipWxbLpt
pA0hn542GjV2FzUb4i1YQPf7GGnbIx+lYzLEIm5z
KINgWuSNgQq9ZjVGByGl2mQfJPf3WPt0GrKkaZHJ
cjkYQa4tSXT4SztqOXBwU46k59yht7Me58bz9YTb
ZshLlB6Txqxyx6IgP0SyCpbgH5m+9ollMCfXTY94
vOVw5F0QtBIYPLn79/f39/f//5Dw==')));
?>
для получения исходного кода просто жмем "Y" несколько раз в процессе деобфускации
================================================== ===============================
1. Установка
================================================== ===============================
Требуется:
1) PHP >= v5.2
2) php-devel
3) PHP Zend Optimizer
Ubuntu (установка):
1) http://forum.ubuntu.ru/index.php?topic=52552.0
2) sudo apt-get install php5-dev
3) Установка Zend Optimizer:
- http://forum.ubuntu.ru/index.php?topic=52552.0
- http://www.ubuntututorials.net/installing-zend-optimizer/
Скачивем сам архив:
http://php-security.org/downloads/evalhook-0.1.tar.gz
Дальше создаем такой файл run.sh:
Код:
tar xvfz evalhook-0.1.tar.gz
cd evalhook
phpize
./configure
make
sudo make install
и из консоли запускаем (понадобятся права root):
архив evalhook-0.1.tar.gz должен лежать рядом с run.sh
Всё. Установлено.
================================================== ===============================
2. Использование
================================================== ===============================
В консоли:
php -d extension=evalhook.so encoded_script.php
где encoded_script.php - ваш обфусцированный php-скрипт.
Ссылки:
Код:
http://php-security.org/2010/05/13/article-decoding-a-user-space-encoded-php-script/ - первоисточник
http://research.zscaler.com/2010/10/php-deobfuscation.html
http://www.php-crypt.com/demo/ - обфускатор, для тестов
PS: Tetsted on Ubuntu 9.10