Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отлов внедрения 
:(
    Опции темы
ASGDeveloper
Дата 15.12.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Есть классический внедренец (инжектор) который внедряет dll-ку в некий процесс А. При помощи kerberos'а и иды был выявлен алгоритм инжекта:
Код

OpenProcess()
VirtualAllocEx()
WriteProcessMemory(..., 'hook.dll', ...)
GetModuleHandleA('kernel32.dll')
GetProcAddress(..., 'LoadLibraryA')
CreateRemoteThread()

И все казалось бы хорошо, но библиотека в конечном результате работает и делает свое черное дело, но вот в списке модулей загруженных А ее нет. Есть варианты почему?

ЗЫ Правда при более тщательном разборе полета оказалось, что третья строка выглядит так:
Код

WriteProcessMemory(00000104, 0F580000, 00407478: "C:\Documents and Settings\UserName\", 00000104, 00000000)
, где UserName - имя текущего и единственного юзеракомпа.

Это сообщение отредактировал(а) ASGDeveloper - 15.12.2007, 20:54
PM MAIL   Вверх
Riply
Дата 15.12.2007, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(ASGDeveloper @  15.12.2007,  20:53 Найти цитируемый пост)
но вот в списке модулей загруженных


А как ты его получаешь ?

Цитата(ASGDeveloper @  15.12.2007,  20:53 Найти цитируемый пост)
Есть варианты почему


Перехват API ?

PM MAIL   Вверх
ASGDeveloper
Дата 15.12.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(Riply @  15.12.2007,  21:50 Найти цитируемый пост)
А как ты его получаешь ?

Цитата(Riply @  15.12.2007,  21:50 Найти цитируемый пост)
Перехват API ?

Смотрю в Process Explorer.
PM MAIL   Вверх
Riply
Дата 15.12.2007, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(ASGDeveloper @  15.12.2007,  22:09 Найти цитируемый пост)
Смотрю в Process Explorer. 


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

PM MAIL   Вверх
ASGDeveloper
Дата 16.12.2007, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(Riply @  15.12.2007,  23:11 Найти цитируемый пост)
Попробуй использовать менее известную программу или получать список вручную,
желательно парой различных способов.

Пробовал и менее известную. И сам через ModuleFirst-ModuleNext (вроде так они называются) Но сразу говорю, по идее dll-ка скрываться не должна.
PM MAIL   Вверх
Riply
Дата 16.12.2007, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(ASGDeveloper @  16.12.2007,  01:11 Найти цитируемый пост)
Пробовал и менее известную. И сам через ModuleFirst-ModuleNext 


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

Цитата(ASGDeveloper @  16.12.2007,  01:11 Найти цитируемый пост)
Но сразу говорю, по идее dll-ка скрываться не должна


У тебя есть исходники и ее и "инжектора", что ты можешь утверждать что они делают, а чего нет ? 
PM MAIL   Вверх
ASGDeveloper
Дата 16.12.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(Riply @  16.12.2007,  07:09 Найти цитируемый пост)
"Черное дело" может продолжать, например, нить или другая библиотека.

Нить это поток?


Цитата(Riply @  16.12.2007,  07:09 Найти цитируемый пост)
У тебя есть исходники и ее и "инжектора", что ты можешь утверждать что они делают, а чего нет ?

С идой я могу утверждать. smile
PM MAIL   Вверх
Riply
Дата 16.12.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(ASGDeveloper @  16.12.2007,  13:51 Найти цитируемый пост)
Нить это поток?


Да, причем не обязательно именно тот же, который загружал библиотеку.

Цитата(ASGDeveloper @  16.12.2007,  13:51 Найти цитируемый пост)
С идой я могу утверждать


Кто такая "идоа" ?

Что показала попытка удаления файла библиотеки после инжекта ?

PM MAIL   Вверх
bartram
Дата 16.12.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Цитата(Riply @  16.12.2007,  17:03 Найти цитируемый пост)
Кто такая "идоа" ?

IDA


Это сообщение отредактировал(а) bartram - 16.12.2007, 15:36


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Riply
Дата 16.12.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(bartram @  16.12.2007,  15:35 Найти цитируемый пост)
IDA

Спасибо. Буду знать.

P.S.
 Просто из любопытства: 
  неужели с ее помощью можно получить уверенность, что знаешь все фокусы, которые
  подопытный процесс может выкинуть ?  (Не положив пару лет на его изучение  smile )

PM MAIL   Вверх
ASGDeveloper
Дата 16.12.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(Riply @  16.12.2007,  15:03 Найти цитируемый пост)
Что показала попытка удаления файла библиотеки после инжекта ?

Файл кто-то держит и он не удаляется. Анлокер (unlocker) не видит.

Цитата(Riply @  16.12.2007,  16:15 Найти цитируемый пост)
подопытный процесс может выкинуть ?

Мы с идочкой выделили несколько основных процедур и ее возможности позволяют дойти до таких вот подробностей:
Код

char __cdecl sub_401000(LPCSTR lpString2)
{
  void *v1; // esi@1
  const CHAR *v2; // edi@2
  char result; // al@8
  HANDLE v4; // eax@9
  void *v5; // edi@9
  void *v6; // eax@11
  void *v7; // ebx@11
  HANDLE v8; // eax@1
  HANDLE v9; // eax@7
  HMODULE v10; // eax@15
  DWORD (__stdcall *v11)(LPVOID); // eax@15

  v8 = CreateToolhelp32Snapshot(2u, 0);
  v1 = v8;
  if ( v8 != (HANDLE)-1 )
  {
    v2 = lpString2;
    do
    {
      pe.dwSize = 296;
      if ( !Process32First(v1, &pe) )
        break;
      if ( Process32Next(v1, &pe) )
      {
        while ( lstrcmpA(pe.szExeFile, v2) )
        {
          if ( !Process32Next(v1, &pe) )
            goto LABEL_7;
        }
        v4 = OpenProcess(0x1F0FFFu, 0, pe.th32ProcessID);
        v5 = v4;
        if ( v4 )
        {
          v6 = VirtualAllocEx(v4, 0, 0x104u, 0x1000u, 0x40u);
          v7 = v6;
          if ( v6 )
          {
            if ( WriteProcessMemory(v5, v6, Text, 0x104u, 0)
              && (v10 = GetModuleHandleA("kernel32.dll"), v11 = (DWORD (__stdcall *)(LPVOID))GetProcAddress(
                                                                                               v10,
                                                                                               "LoadLibraryA"), CreateRemoteThread(v5, 0, 0, v11, v7, 0, 0)) )
            {
              result = 1;
            }
            else
            {
              CloseHandle(v1);
              CloseHandle(v5);
              CloseHandle(v7);
              result = 0;
            }
          }
          else
          {
            CloseHandle(v1);
            CloseHandle(v5);
            result = 0;
          }
        }
        else
        {
          CloseHandle(v1);
          CloseHandle(v5);
          result = 0;
        }
        return result;
      }
LABEL_7:
      Sleep(5u);
      v9 = CreateToolhelp32Snapshot(2u, 0);
      v1 = v9;
    }
    while ( v9 != (HANDLE)-1 );
  }
  CloseHandle(v1);
  return 0;
}



Это сообщение отредактировал(а) ASGDeveloper - 16.12.2007, 16:53
PM MAIL   Вверх
Riply
Дата 16.12.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(ASGDeveloper @  16.12.2007,  16:51 Найти цитируемый пост)
Файл кто-то держит и он не удаляется. Анлокер (unlocker) не видит.


Цитата(ASGDeveloper @  16.12.2007,  16:51 Найти цитируемый пост)
Мы с идочкой выделили несколько основных процедур и ее возможности позволяют дойти до таких вот подробностей:


Ну вот видишь. А ты говорил "не прячется"  smile 

Теперь, когда все встало на свои места, осталась только техника.

Получаем "не хакнутый" список модулей, находим нужный, пробуем анлоадить
его и смотрим, что получится  smile 


PM MAIL   Вверх
ASGDeveloper
Дата 16.12.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(Riply @  16.12.2007,  17:06 Найти цитируемый пост)
Получаем "не хакнутый" список модулей

Как например? smile
PM MAIL   Вверх
Riply
Дата 16.12.2007, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(ASGDeveloper @  16.12.2007,  17:57 Найти цитируемый пост)
Как например? 


Даже и не знаю как быть.
Публиковала, здесь код, показывающий принцип определения, что мы" хакнуты"
и получения адреса "настоящей" функции, но сразу после этого ветку удалили.
Я так и не поняла: Из-за меня или нет. Может я какие правила нарушила smile 

Попробую на словах.

1. Мапим файл DLL в которой находится интересующая нас функция ( Почти всегда это NtDll.dll ).
2. В замапеном образе пробегаемся по его IMAGE_EXPORT_DIRECTORY.
    и находим интересующую нас функцию.
3. Сравниваем "адреса" (плохое название, но не знаю как обозвать.  м.б. смещения ?),  
    того что возвращает GetProcAddress и ф-ии из замаплиного образа.
4. Различаются - мы "хакнуты". Вызываем функцию, используя полученный нами "адрес" из мапа.
    Она и даст нам искомое.

Сумбурно получилось, но надеюсь понятно  smile 


PM MAIL   Вверх
ASGDeveloper
Дата 16.12.2007, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(Riply @  16.12.2007,  19:19 Найти цитируемый пост)
Попробую на словах.

Я знаю как это делать smile Но похоже одним из условий здесь является невмешательство в процесс "потерпевшего" приложения. Может есть еще какие варианты?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.