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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> rootkit NtEnumerateValueKey, перехват NtEnumerateValueKey 
:(
    Опции темы
dvbelyaev
Дата 5.9.2011, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



всем доброго дня, есть вопросик

 мое приложение занимается вопросами безопасности файловой системы (шифрование файлов разными алгоритмами и т.д.)
 во время простоя или пользователем вручную, программа переходит в режим "скрытости" чтобы "злоумышленник" не смог получить доступ к зашифрованным данным
 - в файловой системе прогу не видно
 - из списка процессов ее скрываю используя http://www.delphikingdom.com/asp/answer.asp?IDAnswer=17691
 - осталось скрыть инфу о ней из реестра, а точнее все записи которые содержит путь к проге

 вычитал что нужно перекрыть функцию NtEnumerateValueKey, но тямки не хватает
 буду рад любым примерам и ссылкам на делфи
PM MAIL   Вверх
Riply
Дата 5.9.2011, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(dvbelyaev @  5.9.2011,  11:09 Найти цитируемый пост)
программа переходит в режим "скрытости" чтобы "злоумышленник" не смог получить доступ к зашифрованным данным

Впервые в жизни сталкиваюсь с необходимостью прятанья шивровалки. Зачем это нужно ?
В голову приходит только одно объяснение: форма с предложением отправить смс-ку для расшифровки уже написана ? smile
Косвенным подтверждением этого предположения является и механизм скрытия. 
Программу можно обнаружить в списке процессов практически любым просмоторщиком.
Т.е. важно, чтобы ее не заметили только в первые минуты ее работы ?

Теперь по сути:
Цитата(dvbelyaev @  5.9.2011,  11:09 Найти цитируемый пост)
вычитал что нужно перекрыть функцию NtEnumerateValueKey

Механизм перехвата и коррекции значений NtEnumerateValueKey ничем, кроме названия процедуры и структурами данных,
не отличается от перехвата NtQuerySystemInformation.
Действуй по образу и подобию и все получится. 
Даже новую Dll писать не надо - прямо в этой можно перехватывать не одну, а две ф-ии.

P.S. 
Рекомендую брать примеры перехвата из оригинала (у Джеффри Рихтера), 
а не чужие попытки их переделки на собственный манер, к тому же довольно неуклюжие smile

P.P.S.
Настоятельно прошу аргументировать необходимость скрытия шифровалки и развеять мои "смутные сомнения",
высказанные в начале поста. В противном случае тема будет уничтожена.

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


Новичок



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

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



лично я против этих "глупых скрываний" но шеф настаивает
являюсь ведущим разработчиком сего "чуда" http://cybersafesoft.com/index_rus.php?page=4
в описании "черным по белому" написано что МЫ в режиме безопасности невидимы!
надеюсь что развеил твои  "смутные сомнения",
PM MAIL   Вверх
Riply
Дата 5.9.2011, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(dvbelyaev @  5.9.2011,  21:28 Найти цитируемый пост)
лично я против этих "глупых скрываний" но шеф настаивает

И правильно.
А с шефом можно поговорить.
Некоторые (отнюдь не все) аргументы против скрытия процесса я приводила в этом посте
Если он будет настаивать, то можно попробовать всерьез подойти к этому вопросу,
но (!)  Не будет никаких гарантий, что процесс не будет обнаружен.

В подобных случаях процесс вобще не создают, а, например, "распределяют" свой код по чужим нитям.
На худой конец, пишут длл, которая живет в каком нибудь системном процессе и делает свое дело.
PM MAIL   Вверх
northener
Дата 6.9.2011, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(dvbelyaev @  5.9.2011,  21:28 Найти цитируемый пост)
лично я против этих "глупых скрываний" но шеф настаивает
являюсь ведущим разработчиком сего "чуда" http://cybersafesoft.com/index_rus.php?page=4

Рано или поздно ваше ПО будет расцениваться антивирусным ПО как зловредное или "потенциально" зловредное!


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
dvbelyaev
Дата 6.9.2011, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Riply @ 5.9.2011,  21:44)
Если он будет настаивать, то можно попробовать всерьез подойти к этому вопросу,
но (!)  Не будет никаких гарантий, что процесс не будет обнаружен.

да как бы серьезно подходить и нет необходимости
надо чтобы основной exe-шник не было видно в таскменеджере и в реестре (ТОЛЬКО regedit) нельзя было найти путь к проге

Это сообщение отредактировал(а) dvbelyaev - 6.9.2011, 14:38
PM MAIL   Вверх
Riply
Дата 7.9.2011, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(dvbelyaev @  6.9.2011,  14:38 Найти цитируемый пост)
да как бы серьезно подходить и нет необходимости

ну раз так, то перехватывай совершенно аналогично перехвату NtQuerySystemInformation.
PM MAIL   Вверх
DYUMON
Дата 28.9.2011, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 17.6.2006
Где: Новосибирск

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



вообще почитай на wasm.ru статьи от ms rem  http://www.wasm.ru/article.php?article=apihook_1 типа этой у него хорошо написано что и где хучить


--------------------
Всех программистов надо посадить на целероны, что бы впредь головой думали что пишут.
user posted image
PM MAIL ICQ Skype   Вверх
dvbelyaev
Дата 10.11.2011, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



после отвлечения снова вернулся к теме
что получается:
перехватывать функцию, запрашивать структуру из оригинальной функции

  _KEY_VALUE_BASIC_INFORMATION = packed record
    TitleIndex: ULONG;
    aType: ULONG;
    NameLength: ULONG;
    Name: array[0..0] of PWideChar;
  end;

все поля заполнены, но при попытке преобразовать Name в string - exception
думаю что ошибся в определении Name

описание структуры на си

typedef struct _KEY_VALUE_BASIC_INFORMATION {
  ULONG TitleIndex;
  ULONG Type;
  ULONG NameLength;
  WCHAR Name[1];
} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;


пробовал 
Name: array[0..0] of WideChar;  вроде так правильней
преобразую в string (перепробовал кучу способов) получаю всего 1 символ и совсем не похоже что из значания ключа

Это сообщение отредактировал(а) dvbelyaev - 10.11.2011, 19:12
PM MAIL   Вверх
500mhz
Дата 11.11.2011, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

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



а зачем вообще что то писать в реестр? в чем сакральный смысл?


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

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 15
Всего: 72



Цитата(dvbelyaev @  10.11.2011,  17:17 Найти цитируемый пост)
Name: array[0..0] of WideChar;  вроде так правильней

так правильно.
В си, если массив объявлен всего из одного элемента, никто не мешает обращаться к "следующим", "не существующим" элементам.
В Delphi это несколько проблематично. Выйти из положения можно, например, так (предложение навскидку): сделать переменную PWideChar и "указать" ее на name[0]. После чего - вытащить этой переменной куда-нибудь символы от 0 до NameLength-1
PM MAIL WWW   Вверх
bems
Дата 18.11.2011, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(kami @  11.11.2011,  12:49 Найти цитируемый пост)
В Delphi это несколько проблематично

нет никакой проблемы


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Keeper89
Дата 18.11.2011, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 14
Всего: 58



Цитата(bems @  18.11.2011,  17:38 Найти цитируемый пост)
нет никакой проблемы 

Ага, только в соседней теме было: http://forum.vingrad.ru/index.php?showtopi...t&p=2426712

Это сообщение отредактировал(а) Keeper89 - 18.11.2011, 20:32


--------------------
PM MAIL WWW   Вверх
Dik0n
Дата 20.11.2011, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(bems @  18.11.2011,  17:38 Найти цитируемый пост)
нет никакой проблемы

Подтверждаю. 

Следующий код скомпилится без ошибок, так как на этапе компиляции, не известно, чему будет равна переменная I

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Name : array[0..0] of WideChar;
  I    : Integer;
begin
  for I := 0 to 1000 do
    Name[I] := #0;
end;


А вот здесь он начнет капризничать, мол ты чего smile  массив только из 1 элемента а ты обращаешься к 100

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Name : array[0..0] of WideChar;
begin
    Name[100] := #0;
end;



Это сообщение отредактировал(а) Dik0n - 20.11.2011, 02:47
--------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.

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


 




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


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

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