среда, 30 ноября 2011 г.

wincheck rc8

download mirror
Changelog:
  • пофиксал неверное определение IAT hooks в kernel mode, о чем нам тактично сообщил Dmitry Varshavsky
  • добавлена опция -uem для поиска в процессах всяких странных регионов памяти, имеющих флаг executable. В них попадают все области памяти, не принадлежащие загруженным модулям, PEB.GdiSharedHandleTable & SHAREDINFO.aheList. Для каждого региона выдается примерно такое:
    00530000   Mapped      80000     2  ER--
      00530000 Mapped       6000        ER-- ---
      00536000 Reserve     7A000        ER-- ---

    Тут все понятно по моему - адрес, размер, атрибуты, детализация
  • несколько изменен формат вывода для driver hooks

размер KiTimerTableListHead

а вот например вижу я под vista sp2 примерно такой замечательный кусок кода в ф-ции KeSetTimerEx:

  movzx   edi, byte ptr [esi+2] ; KTIMER.Header.Hand
  mov     eax, large fs:20h ; KPCR.Prcb
  mov     ecx, edi
  and     ecx, 1Fh ;
KTIMER.Header.Hand & 0x1F
  lea     ebx, [eax+ecx*8+4A0h] ; somewhere inside KPRCB.LockQueue
  mov     ecx, ebx
  call    KeAcquireQueuedSpinLockAtDpcLevel
  mov     byte ptr [esi+3], 0
  mov     eax, [esi+18h]
  mov     ecx, [esi+1Ch]
  cmp     eax, ecx
  mov     [ecx], eax
  mov     [eax+4], ecx
  jnz     short loc_4ABC30
  shl     edi, 4 ;
KTIMER.Header.Hand * sizeof(KTIMER_TABLE_ENTRY)
  add     edi, offset _KiTimerTableListHead ;
KiTimerTableListHead[KTIMER.Header.Hand]
  cmp     edi, [edi]

Во всех источниках сказано что размер таблицы KiTimerTableListHead под vista равен 512 элементов. Собственно проверить это легко - адрес KiTimerTableListHead 0x4FCB80, адрес следующей за ней структуры AlpcpNPLookasides 0x4FEB80. Размер 0x2000 / 0x10 = 512 элементов. Еще одна проверка - ф-ция KiComputeTimerTableIndex возвращает результат как маску с 0x1FF
В приведенном же коде мы видим что в регистре edi хранится байт, взятый из KTIMER.Header.Hand и используется как индекс в KiTimerTableListHead для проверки всякого. В байте однако число 512 никак не может уместиться. Соотв-но wtf ?

воскресенье, 27 ноября 2011 г.

vs2010 vs w2k

а вот например одна и та же прога собирается на vs2008 & vs2010 (так бывает, бгг)
Собранная на vs2008 вполне себе работает под w2k (пионэры поди и не знаю уже что это такое, бгг)
Собранная же на vs2010 не работает - при запуске гордо сообщает "этот файл не является приложением win32"
Это все отчего например ? Никакими опциями линковщика сие нельзя поправить ?

суббота, 26 ноября 2011 г.

восторженные поклонники

набижали давеча внезапно. Как всем давно известно © антивирусная индустрия™ отличается сильной аргументацией, критическим взглядом на свои продукты и высокой оценкой продуктов конкурентов, а также ведением конструктивных бесед.
Хвалебные отзывы содержат в себе следующие выражения:
  • унылое поделие
  • божественный огрызок
  • лошить несчастных пользователей
  • ваши mini balls
  • пришлите мне дамп !
До лучших образцов Истинной Питерской Интеллигенции далеко канешна, но тоже ничего. Нужно поработать немного над стилем и никогда, вы слышите - никогда не следует качать и тем более запускать какие-либо осуждаемые продукты - очевидно же что они говно !

К несчастью лишен возможности аргументированно ответить в симметричном стиле - их собственный Продукт у меня не запустился под 32 битами, а под 64 бита и вовсе в природе не существует, о чем кстати даже Написано В Хэлпе ©, бгг

Пора делать фан-клуб имени меня ящетаю

wincheck rc7

download
Changelog:
  • поскольку отдельные граждане не умеют правильно редиректить stdout - добавил опцию -f для задания имени logfile
  • добавил также опцию -k для убийства всяких залипших процессов
  • добавлена проверка handlers, установленных с помощью RegisterApplicationRecoveryCallback
  • добавлена проверка ф-ций, установленных с помощью RegisterMessagePumpHook
  • пофикшен баг, выводящий надоедливое сообщение Unknown apfnDispatch size
  • добавлены всякие devinterfaces, встречающиеся на ноутах
  • и пара-тройка rpc interfaces от 64битной windows 7 sp1
  • ну и еще кое-что исправлено

четверг, 24 ноября 2011 г.

Vba32 AntiRootkit 3.12.5.5

решил затестить давеча сей чрезвычайно широко разрекламированный ARK например
Виснет на моей машине наглухо после нажатия кнопачьки Start, и еще не дает себя прибить никак. Следы жизнедеятельности примерно такие:

SDT entry 13 (ZwAssignProcessToJobObject) hooked \SystemRoot\system32\drivers\httz32lu.sys!
SDT entry 89 (ZwProtectVirtualMemory) hooked \SystemRoot\system32\drivers\httz32lu.sys!
SDT entry D5 (ZwSetContextThread) hooked \SystemRoot\system32\drivers\httz32lu.sys!
SDT entry 101 (ZwTerminateProcess) hooked \SystemRoot\system32\drivers\httz32lu.sys!
SDT entry 102 (ZwTerminateThread) hooked \SystemRoot\system32\drivers\httz32lu.sys!
...
win32k_sdt[355] (NtUserDestroyWindow) hooked, addr A6FB299E \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[378] (NtUserFindWindowEx) hooked, addr A6FB2624 \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[404] (NtUserGetForegroundWindow) hooked, addr A6FB26BE \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[460] (NtUserMessageCall) hooked, addr A6FB2866 \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[475] (NtUserPostMessage) hooked, addr A6FB2912 \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[476] (NtUserPostThreadMessage) hooked, addr A6FB27D8 \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[483] (NtUserQueryWindow) hooked, addr A6FB258E \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[549] (NtUserSetWindowsHookEx) hooked, addr A6FB2A20 \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[552] (NtUserSetWinEventHook) hooked, addr A6FB2B3A \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[570] (NtUserUnhookWindowsHookEx) hooked, addr A6FB2B20 \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[571] (NtUserUnhookWinEvent) hooked, addr A6FB2C40 \SystemRoot\system32\drivers\httz32lu.sys
win32k_sdt[592] (NtUserWindowFromPoint) hooked, addr A6FB2748 \SystemRoot\system32\drivers\httz32lu.sys

Пришлось сочинить по быстрому опцию к wincheck для убийства подобных "продуктов". Убилось канешна, только драйвер егойный например так и не понял что процесса больше нету и остался висеть, не соизволив почистить все свои хуки. Отличный, просто отличный продукт, чо там

Update: авторы посоветовали использовать недокументированный ключик /nodmsa
Те же яйца, вид в профиль - снова повисло все

Doom 3 sources

если кто не видел еще например
внутри всякий треш-угар-содомия - например curl версии 7.11.1 и куча комментов FIXME, бгг

perl rulez

а вот например я сегодня убедился в очередной раз что perl внутри IDA Pro давно перестал быть гиковской игрушкой
Например мне нужно узнать какие инструкции в модуле передают управление через указатель
Собственно их две всего: call [mem] (ff 15 xx xx xx xx) & jmp [mem] (ff 25 xx xx xx xx)
Дело осложняется тем что таких очень дофига - например ссылки на import table. Пришлось скрипт написать, который проходит по списку сегментов, ищет те, что содержат импорты и код и ищет всякое по двум сигнатурам. Работает пару секунд даже на ntoskrnl.exe

среда, 23 ноября 2011 г.

Carberp with rootkit for w7 64bit

был пойман например сегодня с помощью wincheck
собс-но вот по этой строчке:
Image notifiers:
[0] FFFFF800039EF7C0 \SystemRoot\system32\ntoskrnl.exe
[1] FFFFFA800360B6C8 UNKNOWN

отлично-отлично ящетаю, бгг
Дроппер залит на vt - не ловит практически никто. продолжение ждите через месяц, как обычно

вторник, 22 ноября 2011 г.

wincheck doc

A long time ago, in a galaxy far far away...
I promised to write some nice documentation about wincheck


Wincheck is a tool that inspects undocumented or not enough documented Windows internal structures. Note that Wincheck is NOT an anti rootkit (ARK) software. Also it does NOT support disinfection or automatic analysis. Mainly because many offiical commercial products also set lots of hooks in system and full list of such hooks don`t exists

There are several reasons why I wrote this tool
1)  Many existing commercial and free ARK tools can't display or check multiple important Windows structures that modern rootkits use
2)  There is an option to check these structures using WinDbg (with pykd perhaps) and a bunch of different scripts. But this requires additional steps while I was looking for a tool that can be easily started without any installation (from a flash drive, for example). Moreover WinDbg is not very useful without symbols available and symbols can be missing on suspicious system if network support doesn't work. Wincheck does not use symbols and it detects addresses and functions with static code analysis only.
3) hard NIH syndrome

Supported Windows versions
32bit:
  • w2k
  • xp
  • w2k3
  • vista
  • windows 2008
  • windows 7
  • windows 8 dev preview
  • windows 8 consumer preview
  • windows 8 release preview
  • windows 8 rtm 
  • windows 8.1 preview
  • windows 8.1 rtm
  • windows 10 builds 9926, 9879, 10041 & 10074
64bit:
  • xp
  • w2k3
  • vista
  • windows 2008
  • windows 7
  • windows 2008r2
  • windows 8 consumer preview
  • windows 8 server consumer preview
  • windows 8 release preview 
  • windows 8 rtm
  • windows server 2012 rtm 
  • windows 8.1 preview
  • windows 8.1 rtm 
  • windows 10 builds 9926, 9879, 10041 & 10074
Wincheck implementation uses unsigned driver so starting from Windows Vista it requires system boot with "Disable Driver Signature Enforcement" option (use F8 boot menu).

Supported Modes
Wincheck can analyze kernel mode structures or user mode processes. It has to be run with Administrator privileges in both cases.

Kernel Mode
  • code sections integrity checks for kernel, some vital drivers and their import/export tables
  • IDT ('-idt' option)
  • SSDT. '-sdt' option enables ETHREAD.ServiceTable checks for all threads. 32bit only
  • process/thread/image/registry/session notificators and fs change notifiers
  • PnP notificators
  • tables registered with ExRegisterExtension  ('-ext' option)
  • registered callbacks
  • bugcheck callbacks
  • OBJECT_TYPE_INITIALIZER handlers for all registered object types
  • g_CiEnabled & g_CiCallbacks
  • HAL tables, for example, HalAcpiDispatchTable and HalPrivateDispatchTable ('-hal' option)
  • NDIS structures & WFP callouts ('-ndis' option)
  • netio.sys NPI clients & providers, WFP callouts, NsiRegisterChangeNotification(Ex) callbacks ('-ndis' option)
  • RPC interfaces in user mode ('-rpc' option) .  '-npo' option displays process owner for all RPC enpoints (ALPC ports/named pipes)
  • CmControlVector content ('-kopts' option)
  • registered WMI providers ('-wmi' option)
  • IopNotifyShutdownQueueHead and IopNotifyLastChanceShutdownQueueHead ('-shutntfy' option)
  • KTIMERs ('-kt' option) 
  • FltMgr guts ('-fm' option) 
  • WdfFunctions for KMDF-based drivers ('-wdf' option) 
  • CrashdmpCallTable
  • callbacks registered with IoRegisterIoTracking (windows 8 only)
  • CLASS_INIT_DATA & CLASS_DRIVER_EXTENSION
  • win32k!gahti ('-gahti' option)
  • sockets and established connections from tcpip.sys ('-sockets' option. for xp/w2k3 only)
  • sockets and established connections from tcpip6.sys ('-sockets6' option. for xp/w2k3 only)
  • and many others.

User Mode
Checks all or specific (see '-pid ProcessID' option) process.  This check can take significant time to execute but '-p' option can be used to run these checks in parallel on available CPUs. The number of threads used won't exceed KeNumberProcessors.

In this mode the application can check:
 - memory content in all executable sections
 - export table
 - import table
 - delayed import table
 - TLS callbacks
 - different structures that use function pointers including:
  • ntdll.dll callbacks like PFNCLIENT tables, RtlpUnhandledExceptionFilter,  LdrpManifestProberRoutine, CsrServerApiRoutine, RtlpDebugPageHeapXXX handlers etc.
  • shim handlers
  • apfnDispatch, InitializeLpkHooks and WOW callbacks from user32.dll
  • wow64win.dll  function tables (64-bit only)
  • wow64.dll service tables (64-bit only)
  • WNF notifiers ('-wnf ' option)
  • EventCallbacks registered with SetTraceCallback function call ('-traces' option)
  • WMI callbacks/trace guids ('-wmi' option)
  • LSA Security Providers table functions
  • handlers installed with LsaIRegisterPolicyChangeNotificationCallback
  • CSR_SERVER_DLL handlers
  • ole32!IMallocSpy
  • ole32!ChannelHooks
  • AppHelp.dll functions in kernel32.dll
  • yet over 9000
Command Line Options

Common options:
 -f logfile name
 -k Process PID to kill
 -ha - turn off hook analyzer
 -wmi- report WMI entries
Process options:
 -all - check all processes
 -pid Process PID - check process with specific Process PID
 -mods - dump loaded modules
 -pp - dump print providers
 -t - dump threads
 -traces - dump all registered trace callbacks
 -p N - number of threads to use for processes check
 -uem  - check for Unknown Executable Memory
 -wnf - check WNF notifiers
System options:
 -acpi - check some ACPI tables
 -alldrv - check all (known to me) drivers
 -alpc - dump clients of RPC ALPC ports
 -dump_patched - dump patched sections
 -dsdt  - dump SDT
 -dssdt - dump SSDT
 -dext - dump driver extensions
 -emp  - dump EMP callbacks
 -ext   - dump tables registered with ExRegisterExtension
 -fm    - dump FltMgr callback nodes
 -full  - add kernel checks (except RPC & WMI)
 -gahti - dump win32k!gahti table
 -hal  - check HAL tables
 -idt  - check IDT
 -kdmask - dump KD masks set
 -kopts  - dump kernel options (CmControlVector)
 -kshims - dump registered kernel shims (w8 only)
 -kt   - dump KTIMERs
 -ndis - check NDIS
 -nopads - check that all code located only in section content
 -npo - dump RPC Named Pipes Owner
 -obcb - dump object types callbacks
 -pofx  - check PoFxPlugins
 -rdata - check .rdata sections too
 -rdbss to dump rdbss registered devices
 -rpc - report RPC interfaces
 -sched - dump threads from scheduler
 -sdt - check SSDT for all threads
 -shutntfy - check for drivers shutdown notificators
 -sockets - dump tcpip sockets
 -sockets6 - dump tcpip6 sockets
 -st - check system threads
 -timp - dump threads with impersonation token
 -usbport - check USB ports
 -wdf - check WdfFunctions for KMDF-based drivers

пятница, 18 ноября 2011 г.

занимательная компьютерная проктология

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

среда, 16 ноября 2011 г.

совсем отупел

А расскажите мне например про легкий и быстрый способ бросить курить пить и жить узнать, работает ли мой код внутри сервиса (который как известно запрещает по умолчанию общаться с пользовательским десктопом, но может и разрешить посредством флага SERVICE_INTERACTIVE_PROCESS) или внутри обычной пользовательской проги и я могу соотв-но показывать всякое ?

Есличо я в курсе за ф-цию WTSGetActiveConsoleSessionId - это совсем не про то что нужно. Начиная с висты в user32.dll есть также малодокументированная ф-ция _UserTestTokenForInteractive - оно уже больше на правду похоже, но мне и под xp/w2k3 нужно и еще для Terminal Server

понедельник, 14 ноября 2011 г.

откопал

чудесное (из питера, что характерно, бгг)
Каким образом мотивировать с помощью зарплаты, не повышая ее?
Как смотреть в глаза, когда увольняешь?
Должен признаться - последний пункт особенно вызывает у меня некоторые сложности. Обычно хочется просто уебать с ноги причинить телесные повреждения средней степени тяжести напоследок, бгг
И еще внезапно в тему: ein zwei

суббота, 12 ноября 2011 г.

замутил опрос

например поскольку bug reports мне практически никто не пишет, я самонадеянно считаю что wincheck (особенно rc6) является Абсолютно Бесполезной Совершенной и Безглючной прогой (типа linux, бгг)

Сам я проголосовал за п.3 есс-но
Update: я смотрю sww проголосовал уже, бгг

утечка пара

я надеюсь все уже читали
C нетерпением ожидаем привычного завывания из каждого утюга от Спасателей Вселенной™ на предмет "скоро смерть интернета !" "анальный паспорт для каждого !" "kaspersky911 !" "покупайте наших слонов !" и все такое, бгг

среда, 9 ноября 2011 г.

MS11-083

думаю все уже видели
This security update resolves a privately reported vulnerability in Microsoft Windows. The vulnerability could allow remote code execution if an attacker sends a continuous flow of specially crafted UDP packets to a closed port on a target system
Чак Норрис нашел, не иначе

вторник, 8 ноября 2011 г.

wincheck rc6

скачать
в честь первого снега например
Изменений не особо много:
  • был отловлен и пофикшен злостный memory corruption bug, иногда приводящий к падению
  • имена WMI providers зачитываются из реестра (thanks 3jg13)
  • исправлен еще один bug, из-за которого не проверялись таблицы ф-ций в user32.dll. Проверяются apfnDispatch из PEB, callbacks из InitializeLpkHooks & WOW callbacks
  • и еще всякое по мелочи исправлено

воскресенье, 6 ноября 2011 г.

Microsoft Fix it 50792

заключается вот в такой примерно строчке кода на vbs:
cacls %WINDIR%\SYSTEM32\t2embed.dll /E /P """ & Everyone &  """:N"
под вистой и выше:
icacls %WINDIR%\SYSWOW64\t2embed.DLL /deny """ & Everyone & """:(F)"
В переводе на линуксячий - chmod -x
И этот шедевр они рожали всей могучей корпорацией аж целых две недели ! Мде...