Форум: "WinAPI";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
ВнизОпределение программы Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.01 c