Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.53 MB
Время: 0.013 c
1-1124659140
domosed
2005-08-22 01:19
2005.09.11
не допустить чтобы два приложения одновременно запис. и читали фа


2-1123309367
Андрей235
2005-08-06 10:22
2005.09.11
вывести в Caption или text integer переменную или string=integer


3-1122898658
td
2005-08-01 16:17
2005.09.11
как можно посмотреть запрос Оракл?


14-1124230275
VEG
2005-08-17 02:11
2005.09.11
Поиск ветки


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский