Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.11;
Скачать: CL | DM;

Вниз

Определение программы   Найти похожие ветки 

 
SpyBoy ©   (2005-07-14 20:41) [0]

Как определить, какая программа в данный момент использует файл(file.*)?


 
Просто Джо ©   (2005-07-14 21:01) [1]

Полный скан содержимого оп. памяти и страничного файла в режиме ядра. Затем подключаешь дисассемблер + мощный ИИ для выявлений мест, из которых вызывается CreateFile etc, затем подключаешь еще более мощный ИИ для выяснения времени когда это произошло и не закрыт ли уже файл. Примерная схема, удачи :0)


 
SpyBoy ©   (2005-07-14 21:05) [2]

А средствами DELPHI никак?


 
Просто Джо ©   (2005-07-14 21:08) [3]


>  [2] SpyBoy ©   (14.07.05 21:05)
> А средствами DELPHI никак?

Ты ищешь что-то вроде функции WhoDoesUseThisFile? Нету такой функции, ни в Делфи, ни в Си++, ни в Бэйсике.


 
SpyBoy ©   (2005-07-14 21:10) [4]

да нет, а нельзя ли напистаь какую-нибудь ловушку?


 
Просто Джо ©   (2005-07-14 21:13) [5]

В общем случае нерешаемо, тем более, что не определено понятие "использует файл".


 
SpyBoy ©   (2005-07-14 21:17) [6]

Ну вобщем я пишу антикейлоггер, лог файл я уже нахожу, а как
найти сам .exe- ведь при использовании DotFixFileSigner ативирь его не ловит


 
SpyBoy ©   (2005-07-14 21:24) [7]

Неужнли никто не сталкивался


 
BiN ©   (2005-07-15 00:25) [8]

В общем-то, решаемо и не так уж сложно.
Содержимое таблиц хэндлов процессов можно получить с помощью функции NtQuerySystemInformation (тип информации SystemHandleInformation).
Выбираешь объекты с типом "File", тип предварительно можешь узнать с помощью NtQueryObject или по полю ObjectTypeNumber из _SYSTEM_HANDLE_INFORMATION.
Далее с помощью всё того же NtQueryObject получаешь имя объекта файл, т.е. собственно путь файла в форме \Device\Harddisk0\Myfile.txt, который переводишь с помощью QueryDosDevice или еще как в удобоваримый DOS-формат.
Вуаля.
Да, чуть не забыл, в NtQueryObject следует, конечно же, передавать описатель полученный от DuplicateHandle, т.е. вероятно не все процессы можно будет открыть с доступом PROCESS_DUP_HANDLE.
Пример всего вышеописанного процесса любезно предоставлен Игорем Шевченко в посте http://delphimaster.net/view/4-1120126541/

И еще, этот способ периодически будет приводить к фатальным зависанием в NtQueryObject, а именно при попытке обращения к именнованным каналам (а они также имеют тип "File") с незавершенными операциями ввода/вывода.
Есть и другой способ получения информации об открытых объектах, например, используя \Device\Physicalmemory, но это уже совсем другая история -)


 
Германн ©   (2005-07-15 01:18) [9]

>BiN ©   (15.07.05 00:25) [8]
>В общем-то, решаемо и не так уж сложно.

В переводе на русский - "В общем-то решаемо, но только на NT-системах и с очень большим геморроем!"

Если я не правильно перевел, извини!

А уж если вспомнить Просто Джо ©   (14.07.05 21:13) [5],
то вообще "непереводимо"!


 
Просто Джо ©   (2005-07-15 03:25) [10]

Исходя из SpyBoy ©   (14.07.05 21:17) [6] задача сузилась до обозримых пределов. Ищем некий кейлоггер, записывающий следы своей пакостной активности в заранее известный файл.
Предположу следующее:
1. Раз уж автор топика нашел (но нам не сказал) имя лог-файла, то, возможно (и это с весьма высокой долей вероятности можно предположить) автор вопроса знает и имя файла сего злощастного трояна. Следовательно, задача сводится к банальному Find*.
2. Имя лога зашито в искомом исполимом файлк без шифровки -- опять же Find* и в каждом файле, похожем на исполнимом ищем строку.
3. То же, что и (2), но имя лог-файла зашифровано. Пытаемся (предварительно помолившись) сдвигать содержимое файла shr,shl ну, тут проблем не будет, или xor (ох, мать моя) - ну хотя бы по пару недель каждый файл с обозримой длиной ключа.
4. Дождаться выхода обновления антивирусов.

Я (как исключительно ленивый человек), голосую 4-мя конечностями за (4).

Ах, да, еще можно достать Руссиновича насчет исходников FileMonitor"a -- но, предполагаю, что автору вопроса это будет неинтересно.

П.С. Просьба не пинать за развязный тон -- только что (а в Киеве 2 часа ночи) чуть не попал под Камаз, едучи пьяным на велосипеде :-)


 
evvcom ©   (2005-07-15 08:40) [11]


> чуть не попал под Камаз, едучи пьяным на велосипеде

Ну,.. аккуратнее надо быть...


 
BiN ©   (2005-07-15 09:24) [12]

Германн ©   (15.07.05 01:18) [9]

В переводе на русский - "В общем-то решаемо, но только на NT-системах и с очень большим геморроем!"


Ты проктолог? -)
Если нет, то наверно знаешь лучшее решение?


 
dmitry501 ©   (2005-07-15 09:33) [13]

Ах, да, еще можно достать Руссиновича насчет исходников FileMonitor"a -- но, предполагаю, что автору вопроса это будет неинтересно.
Вроде, встречал утверждение, что можно использовать драйвер от FileMon"a в Delphi как раз для таких целей, и на sysinternals"е есть исходники примера.


 
SpyBoy ©   (2005-07-15 19:48) [14]

А какую-нибудь ловушку поставить нереально ?


 
alpet ©   (2005-07-16 13:50) [15]

Реальнее всего отключить клавиатуру и/или сеть от компьютера. Подход к проблеме борьбы с кейлоггерами (которые вполне могут отправлять лог куда-нибудь, вместо его сохранения в файл) вобщем выбран неверный в принципе.


 
SpyBoy ©   (2005-07-17 19:42) [16]

alpet ©   (16.07.05 13:50) [15]
  А ты что, предлагаешь собирать пароль по буквам(копировать-вставить)и хранить пароль в тексовом файле ?

З.Ы. Приложение можно определить, если эмулировать нажатия клавиш и оценивать размер потребляемой всеми процессами памяти(но это если проц не скрытый, а если он вклинился в другой процесс(DLL-injecting)-что тогда?)


 
alpet ©   (2005-07-18 12:32) [17]

SpyBoy ©   (17.07.05 19:42) [16]
Я предлагаю ознакомится с представленной тобой задачей поближе. Это поможет прийти к пониманию, что мониторинг файлов практически бесполезен в данном случае. Лучше напиши виртуальную клавиатуру, для ввода пароля мышью :)


 
SammIk ©   (2005-07-18 21:11) [18]


> BiN ©   (15.07.05 00:25) [8]

Не реально так отловить, увы(
Точнее, шанс стремится к нулю)


 
SpyBoy ©   (2005-07-20 20:04) [19]

alpet ©   (18.07.05 12:32) [17]
Ведь если писать виртуальную клаву, то прмдется эмулировать нажатия клавишь, а значит кейлоггер их запишет.
КАК ОТЛОВИТЬ это приложение ???!!!!Кто-нибудь, подскажте!

P.S.Дети Ивана Кулибина,где вы?


 
alpet ©   (2005-07-21 11:34) [20]

SpyBoy ©   (20.07.05 20:04) [19]
Похоже ты не совсем даже понял о чем я. Написать виртуальную клавиатуру надо отнюдь не для эмуляции обычной - она должна передавать "нажатые" клавиши напрямую в систему проверки пароля, без всякой там эмуляции, можно даже пароля или его хэша целиком.

А приложение ты не отловишь - опыта не хватает.


 
SpyBoy ©   (2005-07-21 12:15) [21]

А у тебя хватит? Поделись.


 
alpet ©   (2005-07-21 12:52) [22]

SpyBoy ©   (21.07.05 12:15) [21]

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


 
SpyBoy ©   (2005-07-21 23:24) [23]

Что ж попытаюсь представить:
Что происходит, когда троянец записывает в файл клавишу,по-моему ,он открывает файл (использует),то есть в ОЗУ будет имя лог-файла.Тогда, как просмотреть все содержимое ОЗУ и вытащить оттуда имя *.exe-файла гадкого троянца?


 
alpet ©   (2005-07-21 23:47) [24]

Ну уж нет, давай-ка поближе к реальности.
Допустим наш троянец представляет собой код, внедрившийся после запуска, скажем в один из сервисов или процессов (в худшем случае, в драйвер клавиатуры, но такое к счастью редко). То есть наличие файла gadkiy_trojan.exe, равно как и строки такой в физической памтяти исключается. Далее - текст подбираемый с клавиатурного ввода (иногда и с текстового буфера обмена) предварительно шифруется (редко когда упаковывается) и аккуратно (скажем раз  в минуту, иногда можно встретить монстра который дожидается повышенной активности жесткого диска) полученное дело пишет в файл (может и в проекцию, но это имхо подозрительнее, хотя и менее уловимо) с невзрачным названием типа ascreply.tmp. Налицо типичная работа программы с временным файлом - такие сотнями создаются и живут сейчас в различных папках (например \Documents and Settings\UserProfile\Application Data).

Попробуй разобраться с набором бессмысленных шифрованных данных в этом файле и уличить после этого скажем explorer.exe в шпионаже.
А ведь некоторые логгеры могут и по сети пароль отослать.


 
alpet ©   (2005-07-21 23:49) [25]

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


 
BiN ©   (2005-07-21 23:51) [26]

SpyBoy ©   (21.07.05 23:24) [23]

Что происходит, когда троянец записывает в файл клавишу,по-моему ,он открывает файл (использует),то есть в ОЗУ будет имя лог-файла.Тогда, как просмотреть все содержимое ОЗУ и вытащить оттуда имя *.exe-файла гадкого троянца?


Эта, ты бы лучше антивирус+брэндмауэр поставил, и не смешил бы людей. Без обид.


 
Eraser ©   (2005-07-21 23:52) [27]

SpyBoy ©   (21.07.05 23:24) [23]

Проблема в том, что файл скорее всего не всё время занят кейлогером, а только на долю секунды, когда нужно записать нужную инфу... информация о пути к файлу может быть зашифрована, и расшифровываться локально (внутри функции) только на очень короткий промежуток времени. ИМХО проще внедриться в процесс и отлавливать CreateFile вызовы.


 
BiN ©   (2005-07-22 00:02) [28]

Eraser ©   (21.07.05 23:52) [27]

ИМХО проще внедриться в процесс и отлавливать CreateFile вызовы.


-)) А куда внедряться-то будешь? Внедренцы, блин -)


 
Eraser ©   (2005-07-22 00:04) [29]

BiN ©   (22.07.05 00:02) [28]

Тут вариант один - во все процессы )

SpyBoy ©

Скачай несколько антикейлогеров и посмотри как они работают, с пом. отладчика например. Скорее всего там применён какой-то эврестический алгоритм.
+ известные мне антикейлогеры "дружат" с KMD.



Страницы: 1 вся ветка

Текущий архив: 2005.09.11;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.037 c
14-1124258736
Игорь Шевченко
2005-08-17 10:05
2005.09.11
Священная война :)


1-1124617108
MeF Dei Corvi
2005-08-21 13:38
2005.09.11
XML и Delphi


3-1122557123
tormoz
2005-07-28 17:25
2005.09.11
Скорорость работы с таблицой БД


14-1124281539
oldman
2005-08-17 16:25
2005.09.11
Вчера умер Гомельский.


11-1106571334
WhiteGuy
2005-01-24 15:55
2005.09.11
KeyDown, strtoint, StringReplace ...