воскресенье, 30 января 2011 г.

подражая z0mbie

январский понедельник явно выдался тяжелым - дико мутило от перелетов и несвежего кокаина. Обозрев мутным взором кабинет Сам увидел в углу робко жмущуюся фигуру в грязных стоптанных ботинках и с заплатами на обоих коленях
Чего тебе ?
хрипло рявкнул Сам. Фигура в углу мелко задрожала, тихо испортила воздух и заикаясь пролепетала, едва не теряя сознание от нахлынувшего ужаса
мне бы это...премию не дадите ? я тут в комментах глумился над конкурентами, сейчас покажу
фигура рысью метнулась к начальственному ноуту. Сам брезгливо покосился на засаленные давно не мытые волосы просителя, но от ноута не отогнал
Вот здесь например, про eset, да, как Вы и велели...
судорожно набирая знакомый урл непослушными пальцами начала было торопливо объяснять фигура. Сам смачно рыгнув начал читать написанное и глаза его медленно налились кровью.
какая львиная доля ? ты, нищеброд наемный, рамсы попутал ? а я значит просто так с косоглазыми в рекламе снимаюсь ?!
На начальственный рык со скоростью света в кабинете выросли как из под земли пара дюжих охранников. Они отволокли побелевшую фигуру с внезапно ставшими ватными ногами за пределы офиса и воткнули в ближайший сугроб головой вниз

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

Тяжела в роиссе судьба наемного работника

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

Православный Свято-Тихоновский гуманитарный университет

наслаждайтесь
интересно как там преподают теорию конечных автоматов с дъявольскими состояниями ДКА например
а уж как у них "искусственный интеллект" выглядит я даже не могу себе представить

пятница, 28 января 2011 г.

сорцы kav 2008

все уже скачали ?

Update: очень смешно местами. Например из kav\sources\AVP32\Scarabey\Scarabey.cpp:

// 7.41.  Напишите функцию match(строка,шаблон); для проверки соответствия строки упро-
// щенному регулярному выражению в стиле Шелл. Метасимволы шаблона:
//
//         * - любое число любых символов (0 и более);
//         ? - один любой символ.
//                       Усложнение:
//         [буквы]  - любая из перечисленных букв.
//         [!буквы] - любая из букв, кроме перечисленных.
//         [h-z]    - любая из букв от h до z включительно.
//
// Указание: для проверки "остатка" строки используйте рекурсивный вызов этой  же  функ-
// ции.
//      Используя эту функцию, напишите программу,  которая  выделяет  из  файла  СЛОВА,
// удовлетворяющие  заданному шаблону (например, "[Ии]*о*т"). Имеется в виду, что каждую
// строку надо сначала разбить на слова, а потом проверить каждое слово.

воскресенье, 23 января 2011 г.

истинное происхождение perl

Larry Wall falls asleep and hits Larry Wall's forehead on the keyboard. Upon waking Larry Wall decides that the string of characters on Larry Wall's monitor isn't random but an example program in a programming language that God wants His prophet, Larry Wall, to design. Perl is born.
отсюда

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

A Guide to Kernel Exploitation

читаю например давеча subj и ржу в голос:
It’s interesting to note that although Apple stopped exporting the sysent table due to rootkit use, it never stopped exporting the symbols for the other system call tables available in the kernel.This means tables such as mach_trap_table are still easy to access from a kernel extension.
Вообще 5ая глава про mac osx дичайше доставляет. Рекомендуется к прочтению абсолютно всем макодрочерам, бгг
Что еще более забавно - полная изоляция user mode address space от kernel mode (и таким образом например исключение возможности подсунуть потоку в kernel mode полностью контролируемый из user mode буфер) совершенно не помогла стать секурнее этим "сельскохозяйственным работникам" (c) forrest gump

Авторы местами тоже самопроизвольно жгут - вот например пойми их - это очередной мелкий стеб или у них реально проблемы с арифметикой:
our sample exploit simply performs 10 allocations to make sure free_list is clean:
int i;
for (i=0; i<=10; i++)
   ioctl(fd,ADDBUFFER,&ds);
или вот пример используемого shellcode:
push ebp
mov ebp, esp
mov ecx, [ebp+0x8]
mov ecx, [ecx+0x64]
xor eax, eax
mov [ecx+0xc], eax
leave
retn

размером 16 байт. вот зачем использовать стандартный пролог и эпилог ? вполне можно в 13 байт уложиться например так:

mov ecx, [esp+4]
mov ecx, [ecx+0x64]
xor eax, eax
mov [ecx+0xc], eax
retn

причем в коде нет ни одного нулевого байта, так что можно и исполнимый файлик назвать ЛL$♦ЛId1└ЙA♀├, бгг

Последняя (8ая) глава вообще угар-содомия. Я причем не поленился, посмотрел на описываемый файл net/sctp/sm_statefuns.c - список копирайтов в начале файла жжот неимоверно:
* (C) Copyright IBM Corp. 2001, 2004
 * Copyright (c) 1999-2000 Cisco, Inc.
 * Copyright (c) 1999-2001 Motorola, Inc.
 * Copyright (c) 2001-2002 Intel Corp.
 * Copyright (c) 2002      Nokia Corp.
бгг

имею глупый вопрос

даже два. Вот например есть самописный драйвер под винду.

Вопрос нумбер ван.
В драйвере есть ioctl с METHOD_OUT_DIRECT. Соотв-но все как положено

pOutputBuffer = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority);

после чего например мне нужно сделать KeStackAttachProcess к чужому процессу и писать всякое в полученный ранее буфер pOutputBuffer, который указывает на некие страницы теперь в другом (?) процессе. Оно таки крашнет например в таком случае ?

Вопрос нумбер ту
А вот например во все том же ранее упомянутом драйвере есть некая либа, которая юзается только в DriverEntry. Причем функций там дофига немало. Хочется весь код функций из этой либы вынести в секцию INIT. Скажем если бы это была простая функция можно было бы сделать как букваре описано:

#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT, MyCoolStartup666)
#endif


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

пятница, 21 января 2011 г.

век живи - век учись

все равно дураком помрешь
намедни выяснилась интересная вещь - если вызывать подключение к rpc серверу из DllMain - процесс периодически (не каждый раз !) повисает насмерть предположительно на RpcStringBindingCompose, причем отладчик говорит что была доставлена APC (потому что самый верхний адрес в треде KiUserApcDispatcher), которая висит на critical section вечно в EtwpEventPump
Дальше мне разбираться лень - проще вынести логику rpc connectа в более другое место

воскресенье, 16 января 2011 г.

почему хабр говно

дочитал тут говнокамменты к темам недели ненависти к c++
говнохабр переплюнул по степени некомпетентности lor
собственно любая организация людей, основанная на кармадрочерстве, ни к чему полезному привести не может по определению. Дело все в том что 90% людей - тупые скоты, не имеющие в силу низкого интеллекта собственного мнения и потому ориентирующихся исключительно на майнстрим. Еще 9% людей безумны в клиническом отношении. Да ладно, чо там, я сам безумен например. Просто безумие бывает разное - например я уверен что половина безумцев регулярно смотрит малахов+, похмеляется свиной мочой и молитца иконам сталина например, бгг
Остается исчезающе малое количество людей, с которыми можно обсуждать всякое, и в силу их малочисленности их мнение не играет рояля по сравнению с размером стада.
Поэтому ноги моей никогда не будет на сайтах, практикующих карму например

есть мнение

что perl недостаточно выразительный язык. по сравнению с

quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)


утащил отсюда

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

еще гадость через pdf поймал

сегодня - искал в гугле всякое и прямо на второй же ссылке тово. Результаты вирустотал дико жгут 9/ 41 (22.0%):
Antivirus Version Last Update Result
AhnLab-V32011.01.15.002011.01.14-
AntiVir7.11.1.1442011.01.14EXP/Pidief.Csa.1.B
Antiy-AVL2.0.3.72011.01.15-
Avast4.8.1351.02011.01.14JS:Pdfka-AQG
Avast55.0.677.02011.01.14JS:Pdfka-AQG
AVG10.0.0.11902011.01.15-
BitDefender7.22011.01.15-
CAT-QuickHeal11.002011.01.15-
ClamAV0.96.4.02011.01.15Exploit.PDF-28528
Command5.2.11.52011.01.14-
Comodo73972011.01.15-
DrWeb5.0.2.033002011.01.15-
eSafe7.0.17.02011.01.13-
eTrust-Vet36.1.81002011.01.14-
F-Prot4.6.2.1172011.01.14JS/Crypted.LW.gen
F-Secure9.0.16160.02011.01.15-
Fortinet4.2.254.02011.01.15JS/Pdfka.CWM!exploit
GData212011.01.15JS:Pdfka-AQG
IkarusT3.1.1.97.02011.01.15-
Jiangmin13.0.9002011.01.15-
K7AntiVirus9.75.35482011.01.14-
McAfee5.400.0.11582011.01.15-
McAfee-GW-Edition2010.1C2011.01.14-
Microsoft1.64022011.01.15Exploit:Win32/Pdfjsc.JX
NOD3257882011.01.14JS/Exploit.Pdfka.OMG.Gen
Norman6.06.122011.01.14-
nProtect2011-01-15.012011.01.15-
Panda10.0.2.72011.01.15-
PCTools7.0.3.52011.01.15-
Prevx3.02011.01.15-
Rising22.82.05.002011.01.15-
Sophos4.61.02011.01.15-
SUPERAntiSpyware4.40.0.10062011.01.15-
Symantec20101.3.0.1032011.01.15-
TheHacker6.7.0.1.1152011.01.14-
TrendMicro9.120.0.10042011.01.15-
TrendMicro-HouseCall9.120.0.10042011.01.15-
VBA323.12.14.22011.01.14-
VIPRE80752011.01.15-
ViRobot2011.1.15.42562011.01.15-
VirusBuster13.6.147.02011.01.14-
Я тупой канешна, но как такое может быть - даже бесплатный и весь из себя opensource clamav  находит, а куча коммерческих вендоров нет ? Гугл со своим safe browsing api тоже не помогает особо

пятница, 14 января 2011 г.

MiFindExportedRoutineByName

всю жысть например выдирал эту ф-цию для всяких грязных нужд дизассемблированием MmGetSystemRoutineAddress
И вот выяснилось страшное - в xp & w2k3 64 бита такой ф-ции больше нет ! Точнее она есть, но inlined. Придется свой аналог писать
Дичайше негодую например
Update: даже самому писать с нуля не пришлось - китайцы уже давно озаботились

четверг, 13 января 2011 г.

pire

как всем давно известно (c) не так давно яндекс опубликовал сорцы библиотеки для быстрых регулярных выражений под названием pire
Мне тут пришла в голову безумная (а других у меня не бывает вроде) идея - вот этого ежа скрестить бы с удавом mysql например для дико быстрого поиска по строчкам взамен их убогого like - было бы вполне кошерно наверное

воскресенье, 9 января 2011 г.

злобный пост

чтение книжек про поиск эксплойтов всегда навевало на меня лютую злобу зевоту
Вот например давеча читаю я A Guide to Kernel Exploitation - конкретно вторую главу, где перечисляются паттерны уязвимостей и думаю, что с поисками описанного вполне способна справиться не особо большая стая дрессированных обезъян:
  • uninitialized pointers using, страница 24. Вполне можно положиться на compiler warning
  • nonvalidated pointers, страница 25 - аналогично, правда нужно добавить атрибут "этот указатель передан из user mode"
  • integer overflow, страница 30 - аналогично
  • double fetch, страница 34 - практически один в один п.2
  • reference counting overflow, страница 39 - тут уже нужна некоторая подсказка компилятору - если мы не возвращаем значение из этой ф-ции, то любая ветка code flow ниже до return должна уменьшить счетчик ссылок
И так далее - поиск процентов 80 описанных уязвимостей вполне можно возложить на какой-нть валидирующий анализатор кода, к которому банально дописывать атрибуты функций и аргументов + пополняемый набор правил валидации.
Причем конкретно для kernel code - он почти всегда написан на plain C, так что его синтаксический разбор и построение графов code flow & data flow вполне способен реализовать в качестве курсача обычный студент

И хер там - вместо этого мы имеем своры т.н. касперски экспертов, которые вместо составления формальных правил продолжают корчить из себя Спасателей Вселенных и Единственных и Неповторимых Носителей Эзотерического Знания. Вот характерный пример:
К сожалению, еще не создана такая полезная вещь, как всеобъемлющий справоч­ник по вопросам безопасности. Те из нас, кто работают в этой области, зачастую создавали свои собственные справочники, содержащие перечни возможных нападений и уязвимых мест, которые встречаются в коммерческих продуктах, описаны в научной литературе или придуманы нами самими. Подобные перечни огромны — пару лет на­зад я составил такой список из 759 нападений, но и он не был исчерпывающим
 Падумаешь, 759, хоть 666 тыщ мульонов - пока они не формализованы в виде правил, которые можно проверять автоматически - все это кармадрочерство шаманство и эзотерика

Дичайше негодую например

Update: ветка обсуждения непригодности oacr для многих описанных случаев на rsdn

пятница, 7 января 2011 г.

ebdb.ru распространяет winlockers

отлично день начался - поймал с этого сайта winlocker через pdf
результаты с virustotal - это на сам .exe (5/ 42):
Antivirus Version Last Update Result
AhnLab-V32011.01.07.042011.01.07-
AntiVir7.11.1.522011.01.07TR/Crypt.XPACK.Gen
Antiy-AVL2.0.3.72011.01.07-
Avast4.8.1351.02011.01.06-
Avast55.0.677.02011.01.06-
AVG9.0.0.8512011.01.07-
BitDefender7.22011.01.07Gen:Trojan.Heur.P.xyW@fq1Whibc
CAT-QuickHeal11.002011.01.07-
ClamAV0.96.4.02011.01.07-
Command5.2.11.52011.01.07-
Comodo73252011.01.07-
DrWeb5.0.2.033002011.01.07-
eSafe7.0.17.02011.01.06-
eTrust-Vet36.1.80862011.01.07-
F-Prot4.6.2.1172011.01.06-
F-Secure9.0.16160.02011.01.07Gen:Trojan.Heur.P.xyW@fq1Whibc
Fortinet4.2.254.02011.01.07-
GData212011.01.07Gen:Trojan.Heur.P.xyW@fq1Whibc
IkarusT3.1.1.90.02011.01.07-
Jiangmin13.0.9002011.01.07-
K7AntiVirus9.75.34612011.01.06-
Kaspersky7.0.0.1252011.01.07-
McAfee5.400.0.11582011.01.07-
McAfee-GW-Edition2010.1C2011.01.07-
Microsoft1.64022011.01.07-
NOD3257662011.01.07-
Norman6.06.122011.01.07-
nProtect2011-01-07.012011.01.07-
Panda10.0.2.72011.01.06Suspicious file
PCTools7.0.3.52011.01.07-
Prevx3.02011.01.07-
Rising22.81.04.042011.01.07-
Sophos4.61.02011.01.07-
SUPERAntiSpyware4.40.0.10062011.01.07-
Symantec20101.3.0.1032011.01.07-
TheHacker6.7.0.1.1112011.01.06-
TrendMicro9.120.0.10042011.01.07-
TrendMicro-HouseCall9.120.0.10042011.01.07-
VBA323.12.14.22011.01.06-
VIPRE79862011.01.07-
ViRobot2011.1.7.42422011.01.07-
VirusBuster13.6.132.02011.01.06-

А это на pdf (3/ 43):

Antivirus Version Last Update Result
AhnLab-V32011.01.07.042011.01.07-
AntiVir7.11.1.522011.01.07-
Antiy-AVL2.0.3.72011.01.07-
Avast4.8.1351.02011.01.06JS:Pdfka-gen
Avast55.0.677.02011.01.06JS:Pdfka-gen
AVG9.0.0.8512011.01.07-
BitDefender7.22011.01.07-
CAT-QuickHeal11.002011.01.07-
ClamAV0.96.4.02011.01.07-
Command5.2.11.52011.01.07-
Comodo73252011.01.07-
DrWeb5.0.2.033002011.01.07-
Emsisoft5.1.0.12011.01.07-
eSafe7.0.17.02011.01.06-
eTrust-Vet36.1.80862011.01.07-
F-Prot4.6.2.1172011.01.06-
F-Secure9.0.16160.02011.01.07-
Fortinet4.2.254.02011.01.07-
GData212011.01.07JS:Pdfka-gen
IkarusT3.1.1.90.02011.01.07-
Jiangmin13.0.9002011.01.07-
K7AntiVirus9.75.34612011.01.06-
Kaspersky7.0.0.1252011.01.07-
McAfee5.400.0.11582011.01.07-
McAfee-GW-Edition2010.1C2011.01.07-
Microsoft1.64022011.01.07-
NOD3257662011.01.07-
Norman6.06.122011.01.07-
nProtect2011-01-07.012011.01.07-
Panda10.0.2.72011.01.06-
PCTools7.0.3.52011.01.07-
Prevx3.02011.01.07-
Rising22.81.04.042011.01.07-
Sophos4.61.02011.01.07-
SUPERAntiSpyware4.40.0.10062011.01.07-
Symantec20101.3.0.1032011.01.07-
TheHacker6.7.0.1.1112011.01.06-
TrendMicro9.120.0.10042011.01.07-
TrendMicro-HouseCall9.120.0.10042011.01.07-
VBA323.12.14.22011.01.06-
VIPRE79862011.01.07-
ViRobot2011.1.7.42422011.01.07-
VirusBuster13.6.132.02011.01.06-

Горячий привет Спасателям Вселенной

среда, 5 января 2011 г.

SRW locks

а вот например читаю я давеча Windows System Programming и вижу в главе 9 описание slim reader/writer locks:
SRW locks are light weight and small, the size of a pointer (either 32 or 64 bits). Also, there is no associated kernel object for waiting, thus SRW locks require minimal resources.
Звучит круто, но нужно проверить как оно сделано на самом деле.
Возьмем например функцию RtlAcquireSRWLockShared из ntdll.dll

понедельник, 3 января 2011 г.

я хочу

быть кочегаром работать в жэке, и тогда со мной наверняка поделятся такой же травой например:
уходит в ночь напевая "бухло оплатим дружно, потому что это нужно"