ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Играем в прятки с Filemon и Regmon. Нестандартный (читай - кривой) кодинг
  #1  
Старый 21.06.2006, 12:46
Аватар для _kREveDKo_
_kREveDKo_
Banned
Регистрация: 04.12.2005
Сообщений: 826
Провел на форуме:
5223479

Репутация: 3813


Post Играем в прятки с Filemon и Regmon. Нестандартный (читай - кривой) кодинг

::goto intro::

:intro

Здарова, перец, сейчас я поведаю тебе маленькую историю о том, как я играл в прятки с Filemon Nt и Regmon Nt.
Этаи программы призваны засекать обращение к файловой системе и к реестру. А мне вот
захотелось сделать так, что бы они не пялились на места, где моя прога оставляет следы.

Начнём с примитива. Вот простейшая программа на си, которая всего-то и делает, что объявляет
переменную с путём к файлу для обращения и записывает по этому пути строчку текста.


Код:
#include <stdio.h>
char *file = "C:\\Windows\\lala.txt";
int main(int argc, char *argv[])
{
FILE *fp;
fp=fopen(file,"w");
fprintf(fp,"Xex! Palevo!");
fclose(fp);
return 0;
}

Предварительно настроив filemon на процесс моего приложения, я запустил прогу и смог лицезреть в
логах место, куда я записал текстовик. Естественно, что это стандартный и наиболее правильный
метод записи в файл - создание потока и запись в него. Вот тут я и начал свои поиски альтернативных
путей записи. Перепробовав практически все стандартные функции для работы с файловой системой,
я вспомнил про свою нездоровую любовь к коммандному интерпретатору и страсть ваять .bat-ники.
Для работы с CMD в C/C++ есть функция system(""); Она-то и пошла в бой.
Безо всяки колебаний я наколбасил уже давно привычную строчку:

echo Xex! Filemon sucksss! > C:\Windows\Help\lala.txt и поместил её в
функцию system("");. Вышло:


Код:
#include <stdio.h>
int main(int argc, char *argv[])
{
system("echo Xex! Filemon sucksss! > C:\\Windows\\Help\\lala.txt");
return 0;
}

Какова была моя радость, когда, пролистав логи, я не увидел пути C:\Windows\Help, а лицезрел
лишь путь к cmd.exe (C:\Windows\system32). Ну правильно! Filemon правильно отследил, что мы
обратились к Cmd.exe!!! Но он даже не стал смотреть, что интерпретатор там вытворяет на харде!
Вот оно! Мы же использовали cmd как козла отпущения, который умеет работать с потоками! =)

::Я требую продолжения банкета!::

Через 2 минуты после оргазма, полученного от результата кривой кодерской мысли, глаза мои
снова загорелись недеЦЦким пламенем и мне захотелось таким же образом наколоть Regmon Nt.
Издав азартное "Гыгы! Нука нука!!" я с блаженным лицом принялся обдумывать, как можно сделать
запись в реестр НЕстандартным путём. Ведь все стандартные ф-ции записи в реестр Regmon Nt видит
как кошка видит бомжа в тёмном подвале, поэтому я даже не стал пытаться их юзать.
"А что тут думать?"-подумал я! Давай опять найдём козла отпущения, только теперь он должен
уметь работать с реестром!.

Да не вопрос, ёпт! Зачем, спрашивается, программеры конторы Билла придумали прогу reg.exe?
Конечно для нас! Её прямая обязанность дать нам возможность работать с реестром через коммандную
строку. Изучив основные параметры этой программы, я наколбасил тестовый код, который через
reg.exe добавлял в реестр параметр "Test" со значением "regmon sucks".


Код:
#include <stdio.h>
int main(int argc, char *argv[])
{
system("reg.exe ADD \"HKCU\\Software\\Microsoft\\Internet Explorer\\Main\" /v Test2 /d \"filemon sucks\"");
return 0;
}

И снова я расплываюсь в улыбке. Regmon своим молчанием даёт понять, что процесс sucks.exe(моя прога)
на девственный реестр не покушался.

Можно было ещё пойти немножко другим способом. Вот код:


Код:
#include <stdio.h>
int main(int argc, char *argv[])
{
system("echo Windows Registry Editor Version 5.00 > sucks.reg");
system("echo [HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main] >> sucks.reg");
system("echo \"Window Title\" = \"lol\" >> sucks.reg");
system("start sucks.reg");
system("del sucks.reg /Q");
system("pause");
return 0;
}
Примитивный сорец, думаю, не вызывает у тебя вопросов. Создаётся файл sucks.reg (создаётся опять же
не стандартным методом), выполняется и удаляется, благополучно занеся запись в реестр и не вызвав
внимания на процесс приложения.




::Помечтали и хватит::

Конечно же будут правы те, кто сейчас начнёт бубнеть, что это совершенно не кодерский подход
к решению проблемы. Данный способ отвлечения работает увы не так хорошо... Увы...А всё потому,
что достаточно в Regmon убрать фильтр по моему процессу и вот уже он прекрасно отследил кто куда
и что записал. Ещё один способ - снятие "слепка" с реестра. Этот способ был описан в спец хакере
за май (С помощью программы WinTools.Net). НО... всё-таки хоть и не намного, но описанный мною
способ осложнит работу крякеру (хотя для нормального крякера, вообще нет неломаемой программы),
ведь винда постоянно работает с реестром и файловой системой. Это значит, что в логах будет куча
мусора, который неприятно разбирать. В общем вердикт думаю такой: 2:1 в пользу спец софта. Одним
очком я наградил себя за храбрость а Reg/File-mon наградил двумя. за то, что с задачей своей он
справился.

::Зачем я всё это читал?::

Лично я считаю, что применение этому способу можно найти лишь в часном случае, при работе в
конкретных условиях. Так обычно и случается: прочитал какую-нибудь статьюс интересным подходом
и отложил в памяти. Потом через определённое время появляется необходимость действовать не
по-страндартному и тогда вспоминается отложенный в "опиративке" способ. Надеюсь
моё мини-исследование тебе тоже когда-нибудь пригодится. =) На этом ставлю точку.
Не болей!

Последний раз редактировалось b00zy_c0d3r; 21.06.2006 в 12:49..
 
Ответить с цитированием

  #2  
Старый 23.06.2006, 04:44
Аватар для W!z@rD
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

Мда... какого только кодинга не существует
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #3  
Старый 23.06.2006, 08:19
Аватар для qBiN
qBiN
Постоянный
Регистрация: 20.01.2005
Сообщений: 899
Провел на форуме:
1535446

Репутация: 182


Отправить сообщение для qBiN с помощью ICQ
По умолчанию

Дурь
 
Ответить с цитированием

  #4  
Старый 30.07.2006, 23:23
Аватар для ProTeuS
ProTeuS
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме:
4226592

Репутация: 2175


Отправить сообщение для ProTeuS с помощью ICQ
По умолчанию

а можно просто:
CreatFileMapping -> MapViewOfFile и файлмон уходит отдохнуть
 
Ответить с цитированием

  #5  
Старый 31.07.2006, 23:02
Аватар для _kREveDKo_
_kREveDKo_
Banned
Регистрация: 04.12.2005
Сообщений: 826
Провел на форуме:
5223479

Репутация: 3813


По умолчанию

На то ж я не Pr0_c0d3r а b00zy_c0d3r =) и на то это кривой кодинг =)
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ