Home

Advertisement

Customize

Dec. 16th, 2009


[info]me_and_hamster

Сны и сновидения | «Открытая лекция» №5 | сегодня

Сегодня, в 18:30 последняя лекция в этом году. Тема: «Сны и сновидения».

Dec. 13th, 2009


[info]tc1over

хакеры

Сейчас пересматривал фильм хакеры и дошло до того места, где он ломал тв-студию (самое начало, там где видео-кассетами на манипуляторах дерутся ещё) так вот, он там смотрит сериал такой, the outer limits. Я загуглил, сериал реальный. Но он выходил с 63го по 65 годы, а потом после большой паузы, с 1995го по 2002.
Когда фильм начинается, то главному герою 11 лет и действие идёт в 88ом, а условный срок заканчивается у него в 18, стало быть он может смотреть по телеку новые выпуски - не думаю, что какой-то канал стал бы крутить передачу такого рода с 30-летним сроком давности. Ток у него там изображение чёрно-белое, а в новых выпусках оно уже цветное какбе. Кто-то конечно может возразить, мб у него просто чб телек. Ну хз, там просто столько всяких спец-эффектов того времени, а телек решили чёрно-белым оставить чтоли?
Короче не важно, а сериал интересный довольно. В духе такой старой фантастики снято и нету замыленных рож с большого экрана.

[info]cr4sh_0x48k

Обмануть антиотладку

Мне периодически попадаются экземпляры malware, которые умеют детектировать присутствие удалённого отладчика подцепленного к виртуальной машине. Как правило, проблемы в данном случае создают именно руткиты, так как грузится они могут раньше, чем инициализируется WinDbg сессия (буткиты, заражение NTLDR и драйверов, которые используются на начальном этапе загрузки).

В 99% случаев, обнаружение удалённого отладчика реализовано весьма тривиально:
1. Проверка глобальной экспортируемой переменной ядра KdDebuggerEnabled, которая при активном отладчике устанавливается в TRUE, и влияет на обработку исключений, и др.
2. Вызов функции NtQuerySystemInformation c классом SystemDebuggerInformation, в возвращаемых данных будет следующая структура:
typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION 
{ // Information Class 35
    BOOLEAN DebuggerEnabled;
    BOOLEAN DebuggerNotPresent;

} SYSTEM_KERNEL_DEBUGGER_INFORMATION, 
*PSYSTEM_KERNEL_DEBUGGER_INFORMATION; 


Оба способа обнаружения отладчика обходятся довольно просто: единственная сложность заключается в том, что для этого, по озвученным выше причинам, не подходит hotpatching ядра из своего драйвера. Поэтому, я написал патчер, которы модифицирует файл ядра на диске:

- Патчатся все xrefs на KdDebuggerEnabled таким образом, что бы значение оригинальной экспортируемой переменной никогда не изменялось.
- Перехватывается системный вызов NtQuerySystemInformation, с подменой значений обоих полей для соответствующего информационного класса.



Архив с бинарником и исходными текстоми доступен для загрузки здесь:
http://rapidshare.com/files/320222449/KdDebuggerEnabled_patch-1.0.zip.html

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

Кроме, собственно, патча и readme к нему, в архиве лежит и драйвер, который позволяет проверить его работоспособность, выводя в debug output информацию о наличии отладчика.

На системе с активным удалённым отладчиком без патча:
nt!KdDebuggerEnabled: 0x8054b6c1 (TRUE)
   DebuggerEnabled=0x00000001
DebuggerNotPresent=0x00000000

На пропатченой системе с активным удалённым отладчиком:
nt!KdDebuggerEnabled: 0x8054b6c1 (FALSE)
   DebuggerEnabled=0x00000000
DebuggerNotPresent=0x00000001

Dec. 2nd, 2009


[info]me_and_hamster

Современная литература | «Открытая лекция» №4 | 3 декабря

Лекция «Современная литература», читает Татьяна Кучина.
Начало в 18:30 в кафе «Расстегаевъ».
Осталось 4 посадочных места. Если есть желание, напишите на evgeniy.golovin@gmail.com

Advertisement

Customize