Анализ Poison Ivy 2.2.0 Server

Тема в разделе "WASM.RESEARCH", создана пользователем nOxnOx, 29 июн 2007.

  1. nOxnOx

    nOxnOx New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2006
    Сообщения:
    22
    victim: server trojana Poison Ivy 2.2.0
    _www.poisonivy-rat.com

    peid показывает http://getpic.info/?p=21052_peid.png visual basic =)
    File запакован и/или зашифрован. Import table нарушен если я правильно угадываю. Но я ето еше не умею востанавливать... поетому я так пытался разобратса да ише и без интернета. Сломался инет... outpost на server.ехе не реагирует. Но я только на моeм компе тестил. loopback...

    http://getpic.info/?p=21057_screen.createprocess.mod.png

    1. Изначально ето место, как и почти все другоe на "dump"е, зашифрованно. StubPath.SOFTWARE\Classes\http\shell\open\command
    там в "regedit" HKEY_LOCAL_MASHINE\SOFTWARE итд. прописан "default browser". стартуетса "browser" без окна и намного менше памяти используя, не все dll загружаютса. Я не проверял все ли ети dll настояшиe, то есть и с нормальной оперой грузятса. http://getpic.info/?p=21054_proc.expl.fake.opera.dll.png

    Скодил мальенкую програмку на асм-е, msgbox выдает. Так если сервер.ехе в нее inject'ить должен, тогда половину win папки он грузит. Я на етот момент еше не все dll проверял.

    Q: почему и как ето работаeт?

    2. CreateProcess... ничего особенного. сервер.ехе умираeт после етого вызова. Странно что ModuleFileName на ebx оказываетса сам сервер.ехе... как будто с CreateProcess он стартуeт сам себя, с "browser"ом как commandline...

    Q: как ето работаeт?

    3. GetCommandLine:
    The return value is a pointer to the command-line string for the current process.
    lstren наверно опечатка в olly. lstrlen:
    The return value specifies the length of the string in bytes.

    считаeт количество знаков в "path" к commandline от сервер.ехе? lstrlen у меня возврашает 42h... потом минус 3 и cmp с следуишим call'ом ->
    0040305E |. FFD0 CALL EAX

    После етого call'а появяeтса в stack'е те 40h с которыми и сравниваeтса ресултат (GetCommandLine -> lstrlen - 3) в конце. call идет в kernel32.dll. там вызываетса:

    ntdll.RtlAllocateHeap
    GetModuleFileNameW
    ntdll.RtlUnicodeStringToAnsiString
    memmove
    ntdll.RtlFreeUnicodeString

    после call'a в еах стоит у меня 40h. push на stack итд.

    если ресултаты не совпадают, прыгаeт через CreateProcess. Делаeт ето только в olly. Если стартовать сервер.ехе просто так без olly, то тогда работаeт всегда. Похоже на antidebug.

    Q: так или нет?

    http://getpic.info/?p=21055_proc.expl.fake.opera.png

    1. real opera. 25 mb.
    2. fake opera. 1 mb.

    http://getpic.info/?p=21056_proc.expl.threads.png

    Он и threads останавливает, наверно чтоб окно не грузилось и программы свои нормальные функции не выполняла..

    http://getpic.info/?p=21051_ida.decrypt.dump.mod.png

    Разшифровка "dump"а проишодит здесь , насколько я понял... я не вникал, но похоже что так. 1F1Ch знаков? "xor"'ит ecx+edx с 5Ah.

    Q: так или нет? и вобше как с запаковкой разобратса чтоб api функции видно было. чтоб анализ olly и ida работал... import table востанавлевать?

    -------------текст этот с паузами писался----------------

    то что имена api's олли не показывает может быть потому что они прямо из соответсвуюших dll вызываютса с помошю их адресса в етих dll... по моему такая же техника при exploit'aх используетса.. но ето так дагадка...

    в memory искал пароль. нашел. breakpoint on memory access почемуто не работает...
    http://getpic.info/?p=21061_search.memory.password.png
    в уже инфицированой опере пароль искал. нашел. break не идет...

    manual их читал уже потом...
    http://en.wikipedia.org/wiki/Camellia_(cipher)
    но тут я вобше никуда...

    -----------02.07.07----------------

    нашел ише что эта весчь Alternate Data Streams исползует. Пойду про ads читать, iczelion pe format туты читать, а потом http://wasm.ru/article.php?article=packlast01 "Об упаковщиках в последний раз"...

    инжектитса ета штука также похоже всегда в explorer.exe

    добавлю готовый server.exe если кому лень скачивать...
    ID: testsrv
    pass: sexy
    connect: 127.0.0.1:80
    mutex: )!VoqA.I4

    заново не стартуетса, в ринг0 не уходит =)

    скажите хоть почему api не показывает, чтоб я хоть знал что мне читать...
     
  2. nOxnOx

    nOxnOx New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2006
    Сообщения:
    22
    pe формат страшная весчь.
    странно.. вроде аж 76 человек скачало и никто не сказал, что используется обыкновенная dll inject.. createprocess стандартный.. только стартуется browser с флагом suspended, а потом virtualallocex writeprocessmemory createremotethread.. и так далее.. импорт оказывается не раздолбан а "заменён".. нашёл я там странную функцию которая api перебирала, из них что то делала и потом с каким то числами сравнивала.. googled я пару опкодов из неё .. оказалось вот что:

    _http://hyatus.newffr.com/TAZ/_VX_/papers/winsys/apicrc32.txt

    писатель скопировал их engine и дабовил чуть error чекинг..
     
  3. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    ну не совсем обычный =)

    инжект с ZwUnmapViewOfSection там юзается...
    интересно в этом серваке тока соотношение размера и функционала =)
     
  4. nOxnOx

    nOxnOx New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2006
    Сообщения:
    22
    ну это тебе.. а я только учусь. а как ты disasm'ил? я вот от руки коментировал какой call что за api вызывает.. а тык как?
     
  5. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    протрейсил сервак в олли по F7 =)
    попутно смотря что и как...