четверг, 30 декабря 2010 г.

AddMandatoryAce

а вот например на старости лет потребовалось мне зарегистрировать под vista rpc интерфейс на named pipes. И все оно замечательно работает, за исключением клиентов с low integrity level - при вызове методов моего интерфейса они обламывались с ошибкой 5 (ERROR_ACCESS_DENIED)
Гугл сказал что нужно в RpcServerUseProtseqEp отдавать правильно настроенный security descriptor, но как его правильно настраивать для указания integrity level не особо помог
Соотв-но ниже небольшой кусок кода, который таки работает

Practical File System Design with the Be File System

вот дочитываю давеча subj - в главе про тестирование файловой системы автор жжет напалмом:
At this stage the testing group could still corrupt the file system, but it took a reasonable amount of effort (i.e.,more than15 minutes)
Before the first release of BFS, the system stabilized to the point where corrupting a hard disk took significant effort and all the real-world tests would run without corruption for 24 hours or more. At first customer ship, the file system had one known problem that we were unable to pinpoint but that would only happen in rare circumstances. By the second release (two months later) several more bugs were fixed, and the third release (another two months later) saw the file system able to withstand several days of serious abuse.

среда, 29 декабря 2010 г.

c запозданием

спешу поздравить всех причастных с днем рождения Отца-Основателя Джона фон Неймана

checked vista on virtual box

пишет мне нечеловеческим голосом:
*** Assertion failed: Missing StreamContext Support: post IRP_MJ_CREATE, not a paging file: (volume->FileSystemType == FLT_FSTYPE_MS_NETWARE) || FlagOn(irpSp->Flags,SL_OPEN_PAGING_FILE)
***   Source File: d:\vistartm\base\fs\filtermgr\filter\fltmgr.c, line 703

и так без конца
чо ей от меня надо то например ?

Update: а сегодня оно меня дико порадовало следующим assert:
*** Assertion failed: The system BIOS on this machine does not properly support the processor.  The system BIOS did not load any microcode update.A BIOS containing the latest microcode update is needed for system reliability.
(CurrentUpdateRevision != 0)
***   Source File: d:\vistartm\base\hals\update\intelupd\update.c, line 440

хочу странного

а существует ли в природе декомпилятор mof файлов от wmi ?
а то вот например есть всякие разные дрова с неблагозвучными именами типа yk62x86.sys, регистрирующие в системе over 9000 145 wmi GUIDENTRYs, которые непонятно зачем и что делают. Учитывая что через wmi можно вызывать даже методы (работающие в kernel mode) - чо-то мне сцыкотно иметь подобных крокодилов без присмотра

Update: бесчеловечные опыты показали, что в драйверах в ресурсе MOFDATA лежит ровно то же самое текстовое представление, только пожатое алгоритмом CMRCICompression. Например заголовок занимает 0x10 байт:
46 4F 4D 42 01 00 00 00 │ 53 67 00 00 64 70 03 00
первый dword - сигнатура FOMB
следующий - флаг наличия компрессии (1 означает что таки да)
следующий - размер сжатых данных
последний - размер распакованных данных
Можно канешна заморочиться и вырипать код распаковки, но на скорую руку проще вызвать из mofd.dll неэкспортируемую ф-цию CMofLexer::CreateBufferFromBMOF :-)

суббота, 25 декабря 2010 г.

Be fs

а вот например читаю я тут давеча Practical File System Design with the Be File System (довольно попсовая книжка) и думаю - надо бы посмотреть как отдельные интересные вещи (вроде блокировок b+trees атрибутов и live queries) реализованы
Есс-но первым делом полез в сорцы linux ("динамичная среда, которая лучше поддерживает новое оборудование и самые передовые технологии", бгг) и вижу примерно следующее:
BeOS file system (BeFS) support (read only) (EXPERIMENTAL)
Notable features include support for arbitrary attributes on files and directories, and database-like indices on selected attributes. (Also note that this driver doesn't make those features available at this time)
 не осилили (c)

четверг, 23 декабря 2010 г.

open-source windows file system driver

если кто не знал например - Ext2Fsd
сорцы местами поучительны, правда комментариев в коде не особо много

среда, 22 декабря 2010 г.

!kwmi

а вот есть такая недокументированная команда в windbg например
и говорит она мне примерно следующее:
Displaying specific guid info not currently supported...
Displaying all guids not currently supported...
Displaying specific provider info not currently supported.
это все патамушта ялузир, да ?

пятница, 17 декабря 2010 г.

books for driver writers

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

общечеловеческое для общего развития:
  • Andrew Tannenbaum Modern Operating Systems - читать крайне осторожно. В свое время некий финский школьник со странным именем линус, наколовшись мульки сраной обчитавшись данной книжки, придумал свою собственную жалкую пародию на unix
  • tcp/ip illustrated - 3 тома комиксов понятно про что
  • Bill Blunden Memory Management: Algorithms and Implementations In C/C++ - довольно попсовая, но на удивление познавательная книжка про алгоритмы управления памятью
  • Maurice Herlihy & Nir Shavit The Art of Multiprocessor Programming - дико тяжкая книжка с тоннами матана. Но зато ! О, зато вы будете точно знать как устроены механизмы синхронизации и почему именно так, а не как вам бы хотелось
Про анальное рабство microsoft windows
  • David Solomon & Mark Russinovich Windows Internals - можно брать любое издание и читать с любой страницы. Объясняет почему windows устроена внутри именно так, а не иначе. Классика и must read
  • Jeffrey Richter Programming Applications for Microsoft Windows - аналогично с упором на user mode
  • Sven Schreiber Undocumented Windows 2000 Secrets - дико угарная книжка про внутренности w2k, причем даются уже вполне нормальные примеры программирования в kernel mode
Собственно про написание дров под windows:
Ну и про отладку (а синяки вы будете видеть очень часто, бгг) - Daniel Pravat & Mario Hewardt Advanced Windows Debugging, после прочтения которой вы научитесь наконец пользоваться windbg и выкините ollydbg на помойку

Наверняка я забыл чего-нть

четверг, 16 декабря 2010 г.

openbsd ipsec backdoor

надеюсь все уже читали
My NDA with the FBI has recently expired, and I wanted to make you aware of the fact that the FBI implemented a number of backdoors and side channel key leaking mechanisms into the OCF, for the express purpose of monitoring the site to site VPN encryption system implemented by EOUSA, the parent organization to the FBI. Jason Wright and several other developers were responsible for those backdoors, and you would be well advised to review any and all code
commits by Wright as well as the other developers he worked with originating from NETSEC.
тысячи глаз, ага-ага

воскресенье, 12 декабря 2010 г.

люто-бешенно завидую

нью-йоркским издателям
это ж какая роскошная работа у них - целых 5 (!) дней подряд им не нужно распевать корпоративные гимны по утрам с умным видом сидеть на бессмысленных совещаниях, отвечать на сотни не менее бессмысленных писем с пометкой urgent и вообще всячески изображать из себя члена общества
с другой стороны мне например сроду не придет в голову порочная мысль "приходить на работу раньше всех". да и "уходить последним" впрочем тоже, томущо после 22:00 в этом проклятом городе бухло больше не продают

суббота, 11 декабря 2010 г.

bug in msdn samples

я тут давеча искал примерчик использования mailslots и нашол сей чудный кусок кода на msdn
Граждане создают event для OVERLAPPED и мало того что не ждут на нем, но и не закрывают его во многих случаях
Использовать такие примеры категорически не рекомендуется

mailslot owner

например под xp sp2 владельца mailslotа можно выявить примерно так (в данном случае мой тестовый процесс PID EA0 создал mailslot "\sample_mailslot" с handle 7E8):

понедельник, 6 декабря 2010 г.

четверг, 2 декабря 2010 г.

tcp_dcerpc_auditor.rb

мне кажется metasploit занимается совершенно социалистическими приписками - например из их списочка IIDs гугл практически ничего не знает про следующие:
  • 04fcb220-fcfd-11cd-bec8-00aa0047ae4e
  • 0a5a5830-58e0-11ce-a3cc-00aa00607271
  • 0c821d64-a3fc-11d1-bb7a-0080c75e4ec1
  • 0da5a86c-12c2-4943-30ab-7f74a813d853
  • 209bb240-b919-11d1-bbb6-0080c75e4ec1
  • 359e47c9-682e-11d0-adec-00c04fc2a078
  • 386ffca4-22f5-4464-b660-be08692d7296
  • 53e75790-d96b-11cd-ba18-08002b2dfead
  • 56c8504c-4408-40fd-93fc-afd30f10c90d
  • 5c89f409-09cc-101a-89f3-02608c4d2361
  • 6bffd098-0206-0936-4859-199201201157
  • 6e17aaa0-1a47-11d1-98bd-0000f875292e
  • 7af5bbd0-6063-11d1-ae2a-0080c75e4ec1
  • 7e048d38-ac08-4ff1-8e6b-f35dbab88d4a
  • 82980780-4b64-11cf-8809-00a004ff3128
  • 8d09b37c-9f3a-4ebb-b0a2-4dee7d6ceae9
  • 93f5ac6f-1a94-4bc5-8d1b-fd44fc255089
  • 9b3195fe-d603-43d1-a0d5-9072d7cde122
  • a4c2fd60-5210-11d1-8fc2-00a024cb6019
  • aa177641-fc9b-41bd-80ff-f964a701596f
  • ce1334a5-41dd-40ea-881d-64326b23effe
  • d2d79dfa-3400-11d0-b40b-00aa005ff586
  • d7f9e1c0-2247-11d1-ba89-00c04fd91268
  • e248d0b8-bf15-11cf-8c5e-08002bb49649
  • e76ea56d-453f-11cf-bfec-08002be23f2f
  • ec02cae0-b9e0-11d2-be62-0020afeddf63
  • eff55e30-4ee2-11ce-a3c9-00aa00607271
  • fc13257d-5567-4dea-898d-c6f9c48415a0
  • ffe561b8-bf15-11cf-8c5e-08002bb49649

среда, 1 декабря 2010 г.

higher-order perl

читаю давеча subj и в главе 5.4 вижу следующий кусок кода:

sub fib
{
  my $n = shift;
  my($s1,$s2,$return);
  while(1)
  {
    if ( $n < 2 ) {
      return $n;
    } else {
      if ( $BRANCH == 0 ) {
        $return = fib($n-2);
      } elsif ( $BRANCH == 1 ) {
        $s1 = $return;
        $return = fib($n-1);
      } elsif ( $BRANCH == 2 ) {
        $s2 = $return;
        $return = $s1 + $s2;
      }
    }
  }
}

но ведь это же не работает ни разу, потому что переменная $BRANCH при любом вызове равна нулю ! wtf ?
И самое главное - зачем это все, если можно обойтись без рекурсии вот примерно так:

sub fib
{
  my $n = shift;
  my $f1 = 0;
  my $f2 = 1;
  return 1 if ( $n < 2 );
  my $tmp;
  for ( my $i = 1; $i < $n; $i++ )
  {
    $tmp = $f2 + $f1;
    $f2 = $f1;
    $f1 = $tmp;
  }
  return $f1 + $f2;
}

вторник, 30 ноября 2010 г.

идентификация vtbl OLE интерфейсов

нас тут отдельные несознательные граждане спрашивают - вот например внутри activex дико много всяких vtbl - как узнать какая какому именно интерфейсу соответствует ?
Можно подумать за 11 лет в ole появилось что-то новое
Но тем не менее я заметил тут одну интересную фишку, значительно облегчающую subj для activex, написанных с применением mfc
Возьмем например запущенный случай - AcroPDF.dll от империи зла, которая сроду никому и никогда .pdb от своих [censored] продуктов не дает в отличие от империи добра

пятница, 26 ноября 2010 г.

wcncsvc.dll RPC interfaces

Windows Connect Now - Config Registrar Service
WcnpRpc C100BEAB-D33A-4A4B-BF23-BBEF4663D017 version 1.0
0x1c methods
  • WcnpRpcSubscribe
  • WcnpRpcUnSubscribe
  • WcnpRpcGetCachedPeers
  • WcnpRpcAsyncGetNotification
  • WcnpRpcCancelPendingNotification
  • WcnpRpcPerformDiscovery
  • WcnpRpcTargetedWlanDiscovery
  • WcnpRpcGetPeerUuidFromTransportAddress
  • WcnpRpcGetPeer
  • WcnpRpcReleasePeer
  • WcnpRpcPeerOpenSession
  • WcnpRpcPeerGetAttribute
  • WcnpRpcPeerGetAttributeAsInteger
  • WcnpRpcPeerGetAttributeAsString
  • WcnpRpcPeerGetVendorExtensions
  • WcnpRpcSessionSetPassword
  • WcnpRpcSessionSetProfileData
  • WcnpRpcSessionSetProfilePassphrase
  • WcnpRpcSessionConnect
  • WcnpRpcSessionGetNotifications
  • WcnpRpcSessionGetWirelessProfile
  • WcnpRpcSessionGetAttributeAsInteger
  • WcnpRpcReleaseSession
  • WcnpRpcSessionSetVendorExtensions
  • WcnpRpcSessionGetVendorExtensions
  • WcnpRpcCreateManagementHandle
  • WcnpRpcSetAdvertisementsEnabled
  • WcnpRpcCloseManagementHandle
WcnTransportRpc C100BEAC-D33A-4A4B-BF23-BBEF4663D017 version 1.0
4 methods
  • WcnSinkOpenHandle
  • WcnSinkCloseHandle
  • WcnSinkDeliverMessage
  • WcnSinkAsyncGetNextAction

bdesvc.dll RPC interface

BitLocker Drive Encryption Service
BdeSvcApi AE55C4C0-64CE-11DD-AD8B-0800200C9A66 version 1.0
2 methods
  • BdeSvcApipConversionEncrypt
  • BdeSvcApipEventTrigger

wwansvc.dll RPC interfaces

WWAN Auto Config Service
winwwandiag D4254F95-08C3-4FCC-B2A6-0B651377A29D version 1.0
4 methods
  • WWDiagQueryInfSnapShot
  • WWDiagQueryInfRecentStats
  • WWDiagQueryInfBulkStats
  • WWDiagQueryInfSignalStrengthStats
winwwan D4254F95-08C3-4FCC-B2A6-0B651377A29C version 1.0
0x14 methods:
  • WwanRpcOpenHandle
  • WwanRpcCloseHandle
  • WwanRpcRegisterNotification
  • WwanRpcAsyncGetNotification
  • WwanRpcEnumerateInterfaces
  • WwanRpcSetInterface
  • WwanRpcQueryInterface
  • WwanRpcScan
  • WwanRpcRegister
  • WwanRpcConnect
  • WwanRpcDisconnect
  • WwanRpcSetSmsConfiguration
  • WwanRpcSmsRead
  • WwanRpcSmsSend
  • WwanRpcSmsDelete
  • WwanRpcSetProfile
  • WwanRpcDeleteProfile
  • WwanRpcGetProfile
  • WwanRpcGetProfileList
  • WwanRpcGetProfileIstream
Регистрируются в epmapper c annotation "Wwan Service"

wbiosrvc.dll RPC interfaces

Windows Biometric Service
WinBioCredentialManager 4BE96A0F-9F52-4729-A51D-C70610F118B0 version 1.0
6 methods
  • WinBioCredMgrSrvSetCredential
  • WinBioCredMgrSrvRemoveCredential
  • WinBioCredMgrSrvRemoveAllCredentials
  • WinBioCredMgrSrvRemoveAllDomainCredentials
  • WinBioCredMgrSrvGetCredentialState
  • WinBioSrvGetServiceMonitorEvent
WinBioServer C0E9671E-33C6-4438-9464-56B2E1B1C7B4 version 1.0
0x16 methods
  • WinBioSrvEnumBiometricUnits
  • WinBioSrvOpenSession
  • WinBioSrvCloseSession
  • WinBioSrvCancel
  • WinBioSrvVerify
  • WinBioSrvIdentify
  • WinBioSrvLocateSensor
  • WinBioSrvEnrollBegin
  • WinBioSrvEnrollCapture
  • WinBioSrvEnrollCommit
  • WinBioSrvEnrollDiscard
  • WinBioSrvEnumEnrollments
  • WinBioSrvGetEvent
  • WinBioSrvCaptureSample
  • WinBioSrvDeleteTemplate
  • WinBioSrvLockUnit
  • WinBioSrvUnlockUnit
  • WinBioSrvControlUnit
  • WinBioSrvControlUnitPrivileged
  • WinBioSrvGetProperty
  • WinBioSrvLogonIdentifiedUser
  • BioCredMgrGetLogonUserIdentity
Регистрируются в epmapper c annotation wbiosrvc
Висят на ALPC port 8765

среда, 24 ноября 2010 г.

+1'' за 7770р

А вот например являюсь я уже почти два года гордым обладателем читалки LBook v3 (да, это наглая реклама yandex market) и даже прочел на нем по складам две с половиной книжки про хоббитов всем хорош сей агрегат кроме чтения всяких специфичных pdf (пусть adobe горит в аду) с кучей формул мелким корявым почерком а тех pdf скачано уже 3 полных dvd
И вот например появляется вот такой девайс - теперь банановый с экранчиком аж целых 7 дюймов вместо 6ти. И вы таки будете заливисто смияццо, но этот +1 дюйм дороже ровно на 7770 честно украденных у сирот и вдов рублей !
Дичайше негодую например

вторник, 23 ноября 2010 г.

crypt32.dll exports

Для симметрии с
Поскольку xp sp2 & xp sp3 и vista & vista sp2 совершенно одинаковы, я их поместил в два столбца - xp и vista соотв-но
Особо пугает тенденция к увеличению числа безымянных экспортируемых символов - например в w2k их не было вовсе, в последующих версиях windows их 2 (наверняка с внутренними именами типа BackDoorForNSA & ZOGAnalZond), а в window7 их уже 11 штук !

bcrypt.dll exports

Windows Cryptographic Primitives Library - появилась с висты

понедельник, 22 ноября 2010 г.

FirewallAPI.dll exports

Вот такая интересная dll появилась начиная с vista - Windows Firewall API

FWPUCLNT.DLL exports

FWP/IPsec User-Mode API

keyiso.dll RPC interfaces

CNG Key Isolation Service
INCryptKeyIso B25A52BF-E5DD-4F4A-AEA6-8CA7272A0E86 version 1.0
0x1B methods
  • SrvRpcCreateContext
  • SrvRpcReleaseContext
  • SrvRpcCryptOpenStorageProvider
  • SrvRpcCryptIsAlgSupported
  • SrvRpcCryptEnumAlgorithms
  • SrvRpcCryptEnumKeys
  • SrvRpcCryptFreeBuffer
  • SrvRpcCryptFreeProvider
  • SrvRpcCryptFreeKey
  • SrvRpcCryptOpenKey
  • SrvRpcCryptCreatePersistedKey
  • SrvRpcCryptGetProviderProperty
  • SrvRpcCryptSetProviderProperty
  • SrvRpcCryptGetKeyProperty
  • SrvRpcCryptSetKeyProperty
  • SrvRpcCryptFinalizeKey
  • SrvRpcCryptEncrypt
  • SrvRpcCryptDecrypt
  • SrvRpcCryptImportKey
  • SrvRpcCryptExportKey
  • SrvRpcCryptSignHash
  • SrvRpcCryptVerifySignature
  • SrvRpcCryptDeleteKey
  • SrvRpcCryptNotifyChangeKey
  • SrvRpcCryptSecretAgreement - название метода доставляет
  • SrvRpcCryptDeriveKey
  • SrvRpcCryptFreeSecret
Имеет место на следующих endpoints:
  • named pipe PIPE\protected_storage
  • named pipe pipe\lsass
  • ALPC Port protected_storage
  • ALPC Port audit
  • ALPC Port samss lpc
  • ALPC Port securityevent
  • ALPC Port LSARPC_ENDPOINT
  • ALPC Port lsasspirpc
  • ALPC Port lsapolicylookup
Как можно догадаться - все вышеперечисленные endpoints принадлежат процессу lsass.exe

воскресенье, 21 ноября 2010 г.

setupapi.dll exports

Поскольку xp sp2 & xp sp3 и vista & vista sp2 совершенно одинаковы, я их поместил в два столбца - xp и vista соотв-но

advapi32.dll exports

vista & vista sp2 совершенно одинаковы

netapi32.dll exports

а msdn оказывается частенько врет неточен
вот например там английским по белому написано про NetDfsSetSecurity
Minimum supported client - Windows Vista
Redistributable - Windows Server 2003 and Windows XP with Service Pack 2

и нету ее на xp sp2, а уже в xp sp3 - есть

пятница, 19 ноября 2010 г.

sspisrv.dll RPC interfaces

sspisrv.dll - LSA SSPI RPC interface DLL
sspirpc 4F32ADC8-6052-4A04-8701-293CCF2096F0 version 1.0
0x10 methods
  •  SspirConnectRpc
  •  SspirDisconnectRpc
  •  SspirDisconnectRpcAsync
  •  SspirCallRpc
  •  SspirAcquireCredentialsHandle
  •  SspirFreeCredentialsHandle
  •  SspirProcessSecurityContext
  •  SspirDeleteSecurityContext
  •  SspirSslQueryCredentialsAttributes
  •  SspirNegQueryContextAttributes
  •  SspirSslSetCredentialsAttributes
  •  SspirApplyControlToken
  •  SspirLogonUser
  •  SspirLookupAccountSid
  •  SspirGetUserName
  •  SspirGetInprocDispatchTable
Имеет место только в windows7 на следующих endpoints:
  • ALPC Port lsapolicylookup
  • ALPC Port securityevent
  • ALPC Port audit
  • ALPC Port protected_storage
  • ALPC Port LSARPC_ENDPOINT
  • ALPC Port lsasspirpc
  • ALPC Port samss lpc

среда, 17 ноября 2010 г.

касперски жжот

на основе моделирования мышления хакеров, которое предсказуемое и шаблонное и потому были пойманы все известные мне zero-days
отсюдова
ну вы понели, да - моделирование мышления хакеров предсказуемое и шаблонное
предсказуемое и шаблонное
шаблонное и предсказуемое
а разгадка одна - безблагодатность все известные мне

вторник, 16 ноября 2010 г.

Extending and Embedding Perl

осилил наконец дочитать subj
буду краток - книжку читать не стоило совершенно. Авторы банально взяли вполне общедоступную документацию, добавили туда примеров использования perl функций - и всё
Например из книжки вы не узнаете как
  • общаться с magic-переменными
  • сделать свои tied переменные
  • использовать layered perl IO
  • использовать unicode при биндинге
  • использовать при биндинге bignum
  • вернуть из своей ф-ции perl class
и я думаю еще много чего вы не узнаете
отвратительно

жыжы все ?

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

завел ещо один бложык

http://redpmedium.blogspot.com/
буду туда писать всякое (если мне будет не лень) про маргинальный музон, треш, угар содомию и прочие кровавые фильмы, часто матом

воскресенье, 14 ноября 2010 г.

эпичный тред

в котором хаскельщику объясняют, что его картина мира мягко говоря несколько неполна, бгг
Но вообще граждане, сумевшие таки осилить haskell, несколько умнее среднестатистического гражданина, так что в конце признаются что были неправы
А вот например с существами, которых хватило только на php python - спорить совершенно невозможно - они просто не понимают а чо такова - щас все портируем быстренько и в chroot запустим

Склоняюсь к мысли что петонщиков нужно сразу молча пинать коваными сапогами до потери сознания например и доступ в svn отобрать пока asm не выучат

суббота, 13 ноября 2010 г.

wiaservc.dll RPC interfaces

Still Image Devices Service
stirpc 8C7A6DE0-788D-11D0-9EDF-444553540000 version 2.0
0x10 methods
  •  R_StiApiGetVersion
  •  R_StiApiEnableHwNotifications
  •  R_StiApiGetHwNotificationState
  •  R_StiApiLaunchApplication
  •  R_StiApiOpenDevice
  •  R_StiApiSubscribe
  •  R_StiApiGetLastNotificationData
  •  R_StiApiUnSubscribe
  •  R_StiApiCloseDevice
  •  R_StiApiLockDevice
  •  R_StiApiUnlockDevice
  •  R_WiaGetEventDataAsync
  •  OpenClientConnection
  •  CloseClientConnection
  •  RegisterUnregisterForEventNotification
  •  WiaGetRuntimetEventDataAsync
Висит на ALPC Port STI_LRPC

umrdp.dll RPC interfaces

Terminal Server Device Redirector Service

IRpcPrintDrv C80066A8-7579-44FC-B9B2-8466930791B0 version 1.0
1 method
  •  RpcPrintDrvGetInfo
Висит на ALPC Port TSUMRPD_PRINT_DRV_LPC_API

TermsrvRemoteDevice 7212A04B-B463-402E-9649-2BA477394676 version 1.0
6 methods
  •  RpcPing
  •  RpcOpenDevice
  •  RpcCloseDevice
  •  RpcGetSessionId
  •  RpcGetInterfaceGuids
  •  RpcGetClientDeviceId
Висит на ALPC Port RemoteDevicesLPC_API

IKEEXT.DLL RPC interfaces

IKE extension (еще бы я знал кто это и какое отношение имеет к икее)
IkeRpcIKE A398E520-D59A-4BDD-AA7A-3C1E0303A511 version 1.0
8 methods
  •  IkeRpcIkeGetStatistics
  •  IkeRpcIkeSACreateEnumHandle
  •  IkeRpcIkeSAEnum
  •  IkeRpcIkeSADestroyEnumHandle
  •  IkeRpcIkeSADeleteById
  •  IkeRpcIkeSAGetById
  •  IkeRpcIkeSaDbGetSecurityInfo
  •  IkeRpcIkeSaDbSetSecurityInfo
регистрируется в epmapper с annotation IKE/Authip API
Висит на следующих endpoints:
  • named pipe PIPE\atsvc
  • named pipe PIPE\srvsvc
  • ALPC Port IUserProfile2
  • ALPC Port senssvc
  • ALPC Port SECLOGON

пятница, 12 ноября 2010 г.

еще не все гении подохли

в стране вечного апартеида
А в небе луна. И видит Петр, что улыбка то у живого стоматолога стала злая.  
            - Почему ты смотришь на меня так злобно, живой стоматолог?
            Спросил живого стоматолога Петя.
            - Потому что я мертвый стоматолог. 
дико жжот гражданин

четверг, 11 ноября 2010 г.

wlanext.exe RPC interfaces

Windows Wireless LAN 802.11 Extensibility Framework
регистрируется в epmapper с annotation IhvExtRpcServer
ihvhandlers 98E96949-BC59-47F1-92D1-8C25B46F85C7 version 1.0
0xF methods
  • RpcDot11ExtIhvInitService
  • RpcDot11ExtIhvDeinitService
  • RpcDot11ExtIhvInitAdapter
  • RpcDot11ExtIhvDeinitAdapter
  • RpcDot11ExtIhvProcessSessionChange
  • RpcDot11ExtIhvIsUIRequestPending
  • RpcDot11ExtIhvPerformCapabilityMatch
  • RpcDot11ExtIhvValidateProfile
  • RpcDot11ExtIhvPerformPreAssociate
  • RpcDot11ExtIhvAdapterReset
  • RpcDot11ExtIhvCreateDiscoveryProfiles
  • RpcDot11ExtIhvProcessUIResponse
  • RpcDot11ExtIhvQueryUIRequest
  • RpcDot11ExtIhvOnexIndicateResult
  • RpcDot11ExtIhvControl

wlanmsm.dll RPC interfaces

Windows Wireless LAN 802.11 MSM DLL
регистрируется в epmapper с annotation IhvExtRpcServer
ihvmsmapi C3F42C6E-D4CC-4E5A-938B-9C5E8A5D8C2E version 1.0
0xC methods
  • RpcDot11ExtRegisterIhvProcess
  • RpcDot11ExtPreAssociateCompletion
  • RpcDot11ExtPostAssociateCompletion
  • RpcDot11ExtSendUIRequest
  • RpcDot11ExtSendNotification
  • RpcDot11ExtGetProfileCustomUserData
  • RpcDot11ExtSetProfileCustomUserData
  • RpcDot11ExtNotifyChangeState
  • RpcDot11ExtSetCurrentProfile
  • RpcDot11ExtStartOneX
  • RpcDot11ExtStopOneX
  • RpcDot11ExtProcessSecurityPacket

картинка для медитации-4

всегда полезно помнить что точек зрения на мир может быть больше одной:

среда, 10 ноября 2010 г.

bthserv.dll RPC interfaces

Bluetooth Support Service
BthServRPCService 2ACB9D68-B434-4B3E-B966-E06B4B3A84CB version 1.0
0x15 methods
  • BthServOpen
  • BthServClose
  • BthServRegisterAuthenticationEvent
  • BthServDeregisterAuthenticationEvent
  • BthServGetAuthRequest
  • BthServGetDeviceInfo
  • BthServSetDeviceName
  • BthServGetDeviceList
  • BthServActivateService
  • BthServUpdateService
  • BthServGetSdpRecord
  • BthServSetSdpRecord
  • BthServSetSdpRecordWithInfo
  • BthServRemoveSdpRecord
  • BthServEnableDiscovery
  • BthServUninstallDevice
  • BthServEirGetRecords
  • BthServEirSetRecord
  • BthServEirUpdateRecord
  • BthServEirRemoveRecord
  • BthServTestRegisterAuthenticationEvent
Висит на ALPC Port BthServEp

vaultsvc.dll RPC interfaces

Credential Manager Service
IVault BB8B98E8-84DD-45E7-9F34-C3FB6155EEED version 1.0
0x18 methods:
  • VltCreateItemType
  • VltDeleteItemType
  • VltEnumerateItemTypes
  • VltAddItem
  • VltFindItems
  • VltEnumerateItems
  • VltGetItem
  • VltRemoveItem
  • VltCopyItem
  • VltMoveItem
  • VltGetItemType
  • VltOpenVault
  • VltCloseVault
  • VltLockVault
  • VltUnlockVault
  • VltConfirmVaultAccess
  • VltGetInformation
  • VltSetInformation
  • VltCreateVault
  • VltCopyVault
  • VltDeleteVault
  • VltLoadVaults
  • VltUnloadVaults
  • VltEnumerateVaults
Имеет место быть на следующих endpoints:
  • named pipe PIPE\protected_storage
  • named pipe pipe\lsass
  • ALPC Port lsapolicylookup
  • ALPC Port securityevent
  • ALPC Port audit
  • ALPC Port protected_storage
  • ALPC Port LSARPC_ENDPOINT
  • ALPC Port lsasspirpc
  • ALPC Port samss lpc
  • ALPC Port Vault

суббота, 6 ноября 2010 г.

vista sp2 & windows7 RPC interfaces

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

Disclaimer

Есс-но все нижеописанное не является абсолютно полным и исчерпывающим списком всех возможных RPC интерфейсов windows. Соотв-но автор категорически не желает нести ответственность за допущенные неточности, ковырять неописанные интерфейсы, а также исправлять найденные ошибки и проч. и проч.
И вообще обновление данного списочка будет зависеть от вашего поведения например не менее 666 комментов и количества выпитого автором поить лучше всего Chivas Brothers Strathisla

Как эти данные были получены

Были взяты 2 свежепоставленные версии windows, а именно
  • vista ultimate sp2 32bit
  • windows7 home premium 32bit
на которых была запущена некая самописная тулза на основе rpcdump, но еще она умеет показывать процесс-владелец RPC endpoint (LPC порт, named pipe или сокет). Соотв-но так были получены списки rpc интерфейсов с их IID. Тулза непубличная и я вам ее не дам потому что вы все равно свиньи неблагодарные я вам ничего не должен например.
Далее на основе этих списков была запущена другая тулза (не менее непубличная), которая пыталась найти модуль, ответственный за регистрацию каждого из ранее найденных rpc интерфейсов. Поскольку она наверняка дико глючит и регулярно слушает радио радонеж, то модули нашлись далеко не все.
Далее был написан на perl crawler, который пытался через google найти описание найденных rpc интерфейсов - это было совершенно бесполезно, потому что кроме французов с http://www.hsc.fr/ressources/articles/win_net_srv/index.html эта тема похоже больше никем в этих ваших инторнетах не освещалась
Соотв-но для сборки всего вышеперечисленного был написан еще один perl script, которым уже и был сгенерирован

список

sysntfy.dll RPC interfaces

sysntfy.dll Windows Notifications Dynamic Link Library
Висит на следующих endpoints:

  • named pipe PIPE\atsvc
  • named pipe PIPE\srvsvc
  • named pipe \PIPE\protected_storage
  • named pipe pipe\lsass
  • named pipe \pipe\trkwks
  • ALPC Port LSMApi
  • ALPC Port protected_storage
  • ALPC Port audit
  • ALPC Port samss lpc
  • ALPC Port securityevent
  • ALPC Port IUserProfile2
  • ALPC Port senssvc
  • ALPC Port SECLOGON
  • ALPC Port trkwks
s_IRPCWinlogonNotifications C9AC6DB5-82B7-4E55-AE8A-E464ED7B4277 version 1.0
0xf methods:
  •  s_OnInitialConnection
  •  s_OnCreateSession
  •  s_OnStartScreenSaverAsDefaultUser
  •  s_OnStopScreenSaverAsDefaultUser
  •  s_OnLogon
  •  s_OnLock
  •  s_OnUnlock
  •  s_OnStartScreenSaverAsUser
  •  s_OnStopScreenSaverAsUser
  •  s_OnDisconnect
  •  s_OnReconnect
  •  s_OnLogoff
  •  s_OnTerminateSession
  •  s_OnStartShell
  •  s_OnEndShell

BFE.DLL RPC interfaces

BFE.DLL - Base Filtering Engine
BfeRpcBFE DD490425-5325-4565-B774-7E27D6C09C24 version 1.0
0x8e methods:
  •  BfeRpcGetNextNotificationBatch
  •  BfeRpcEngineOpen
  •  BfeRpcEngineClose
  •  BfeRpcEngineGetOption
  •  BfeRpcEngineSetOption
  •  BfeRpcEngineGetSecurityInfo
  •  BfeRpcEngineSetSecurityInfo
  •  BfeRpcSessionCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcSessionDestroyEnumHandle
  •  BfeRpcTransactionBegin
  •  BfeRpcTransactionCommit
  •  BfeRpcTransactionAbort
  •  BfeRpcProviderAdd
  •  BfeRpcProviderDeleteByKey
  •  BfeRpcProviderGetByKey
  •  BfeRpcProviderCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcProviderDestroyEnumHandle
  •  BfeRpcProviderGetSecurityInfoByKey
  •  BfeRpcProviderSetSecurityInfoByKey
  •  BfeRpcProviderSubscribeChanges
  •  BfeRpcProviderUnsubscribeChanges
  •  BfeRpcProviderSubscriptionsGet
  •  BfeRpcProviderContextAdd
  •  BfeRpcProviderContextDeleteById
  •  BfeRpcProviderContextDeleteByKey
  •  BfeRpcProviderContextGetById
  •  BfeRpcProviderContextGetByKey
  •  BfeRpcProviderContextCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcProviderContextDestroyEnumHandle
  •  BfeRpcProviderContextGetSecurityInfoByKey
  •  BfeRpcProviderContextSetSecurityInfoByKey
  •  BfeRpcProviderContextSubscribeChanges
  •  BfeRpcProviderContextUnsubscribeChanges
  •  BfeRpcProviderContextSubscriptionsGet
  •  BfeRpcSubLayerAdd
  •  BfeRpcSubLayerDeleteByKey
  •  BfeRpcSubLayerGetByKey
  •  BfeRpcSubLayerCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcSubLayerDestroyEnumHandle
  •  BfeRpcSubLayerGetSecurityInfoByKey
  •  BfeRpcSubLayerSetSecurityInfoByKey
  •  BfeRpcSubLayerSubscribeChanges
  •  BfeRpcSubLayerUnsubscribeChanges
  •  BfeRpcSubLayerSubscriptionsGet
  •  BfeRpcLayerGetById
  •  BfeRpcLayerGetByKey
  •  BfeRpcLayerCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcLayerDestroyEnumHandle
  •  BfeRpcLayerGetSecurityInfoByKey
  •  BfeRpcLayerSetSecurityInfoByKey
  •  BfeRpcCalloutAdd
  •  BfeRpcCalloutDeleteById
  •  BfeRpcCalloutDeleteByKey
  •  BfeRpcCalloutGetById
  •  BfeRpcCalloutGetByKey
  •  BfeRpcCalloutCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcCalloutDestroyEnumHandle
  •  BfeRpcCalloutGetSecurityInfoByKey
  •  BfeRpcCalloutSetSecurityInfoByKey
  •  BfeRpcCalloutSubscribeChanges
  •  BfeRpcCalloutUnsubscribeChanges
  •  BfeRpcCalloutSubscriptionsGet
  •  BfeRpcFilterAdd
  •  BfeRpcFilterDeleteById
  •  BfeRpcFilterDeleteByKey
  •  BfeRpcFilterGetById
  •  BfeRpcFilterGetByKey
  •  BfeRpcFilterCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcFilterDestroyEnumHandle
  •  BfeRpcFilterGetSecurityInfoByKey
  •  BfeRpcFilterSetSecurityInfoByKey
  •  BfeRpcFilterSubscribeChanges
  •  BfeRpcFilterUnsubscribeChanges
  •  BfeRpcFilterSubscriptionsGet
  •  BfeRpcBfeIPsecOffloadDone
  •  BfeRpcBfeIPsecDosFWUsed
  •  BfeRpcBfeIPsecGetStatistics
  •  BfeRpcBfeIPsecSaContextCreate
  •  BfeRpcBfeIPsecSaContextDeleteById
  •  BfeRpcBfeIPsecSaContextGetById
  •  BfeRpcBfeIPsecSaContextGetOrSetSpi
  •  BfeRpcBfeIPsecSaContextAddInbound
  •  BfeRpcBfeIPsecSaContextAddOutbound
  •  BfeRpcBfeIPsecSaContextUpdate
  •  BfeRpcBfeIPsecSaContextExpire
  •  BfeRpcBfeIPsecSaContextCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcBfeIPsecSaContextDestroyEnumHandle
  •  BfeRpcBfeIPsecSaCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcBfeIPsecSaDestroyEnumHandle
  •  BfeRpcBfeIPsecSaDbGetSecurityInfo
  •  BfeRpcBfeIPsecSaDbSetSecurityInfo
  •  BfeRpcBfeIPsecDospGetStatistics
  •  BfeRpcBfeIPsecDospStateCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcBfeIPsecDospStateDestroyEnumHandle
  •  BfeRpcBfeIPsecDospGetSecurityInfo
  •  BfeRpcBfeIPsecDospSetSecurityInfo
  •  BfeRpcNetEventCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcNetEventDestroyEnumHandle
  •  BfeRpcNetEventsGetSecurityInfo
  •  BfeRpcNetEventsSetSecurityInfo
  •  BfeRpcNetEventSubscribe
  •  BfeRpcNetEventUnsubscribe
  •  BfeRpcNetEventSubscriptionsGet
  •  BfeRpcNetEventsLost
  •  BfeRpcClassify
  •  BfeRpcAddLayerReplica
  •  BfeRpcDeleteLayerReplica
  •  BfeRpcSecureSocketAdd
  •  BfeRpcSecureSocketDeleteByKey
  •  BfeRpcBfeIPsecTunnelAdd
  •  BfeRpcBfeIPsecTunnelAddConditions
  •  BfeRpcSecureSocketDeleteByKey
  •  BfeRpcBfeIPsecSaInitiateAsync
  •  BfeRpcOpenToken
  •  BfeRpcCloseToken
  •  BfeRpcAleExplicitCredentialsQuery
  •  BfeRpcAleEndpointGetById
  •  BfeRpcAleEndpointCreateEnumHandle
  •  BfeRpcCalloutEnum
  •  BfeRpcNetEventDestroyEnumHandle
  •  BfeRpcAleEndpointGetSecurityInfo
  •  BfeRpcAleEndpointSetSecurityInfo
  •  BfeRpcAleGetPortStatus
  •  BfeRpcIsUserAuthConfigured
  •  BfeRpcKeyModuleAdd
  •  BfeRpcKeyModuleDeleteByKey
  •  BfeRpcKeyModuleUpdateAcquire
  •  BfeRpcBfeIPsecDriverInitiateAcquire
  •  BfeRpcBfeIPsecDriverExpire
  •  BfeRpcBfeIPsecDriverProcessClearTextResponse
  •  BfeRpcBfeProcessNameResolutionEvent

sysmain.dll RPC interfaces

sysmain.dll - Superfetch Service Host
Висит на следующих endpoints:
  • named pipe pipe\trkwks
  • ALPC Port trkwks
PfRpcServerSuperfetch B58AA02E-2884-4E97-8176-4EE06D794184 1.0
1 method:
  •  PfRpcServerExecuteCommand

umpo.dll RPC interfaces

umpo.dll - User-mode Power Service
Имеет место быть в windows7 на следующих endpoints:

  • ALPC Port umpo
  • ALPC Port plugplay
  • ALPC Port actkernel
umpoapi 6C9B7B96-45A8-4CCA-9EB3-E21CCF8B5A89 version 1.0
0x1c methods:
  •  UmpoRpcReadFromSystemPowerKey
  •  UmpoRpcReadFromUserPowerKey
  •  UmpoRpcReadACValue
  •  UmpoRpcReadDCValue
  •  UmpoRpcWriteToSystemPowerKey
  •  UmpoRpcWriteToUserPowerKey
  •  UmpoRpcApplyPowerRequestOverride
  •  UmpoRpcApplyPowerSettings
  •  UmpoRpcSetActiveScheme
  •  UmpoRpcGetActiveScheme
  •  UmpoRpcRestoreDefaultScheme
  •  UmpoRpcRestoreDefaultSchemesAll
  •  UmpoRpcDuplicateScheme
  •  UmpoRpcDeleteScheme
  •  UmpoRpcImportScheme
  •  UmpoRpcReplaceDefaultPowerSchemes
  •  UmpoRpcSettingRegisterNotification
  •  UmpoRpcSettingUnregisterNotification
  •  UmpoRpcLegacyEventRegisterNotification
  •  UmpoRpcEnumerate
  •  UmpoRpcReadSecurityDescriptor
  •  UmpoRpcWriteSecurityDescriptor
  •  UmpoRpcSettingAccessCheck
  •  UmpoRpcCreateSetting
  •  UmpoRpcCreatePossibleSetting
  •  UmpoRpcRemoveSetting
  •  UmpoRpcSetAlsBrightnessOffset
  •  UmpoRpcGetPlatformRole

emdmgmt.dll RPC interfaces

emdmgmt.dll - ReadyBoost Service
Имеет место в vista sp2 на следующих endpoints:
  • named pipe pipe\trkwks
  • ALPC Port trkwks
EmdService 654976DF-1498-4056-A15E-CB4E87584BD8 1.0
1 method
  •  EcRpcServerExecuteCommand
Название метода выглядит довольно многообещающим, хе-хе

appinfo.dll RPC interfaces

appinfo.dll - Application Information Service

IAisAxISInfo 58E604E8-9ADB-4D2E-A464-3B0683FB1480 version 1.0
1 method
 RAiGetTokenForAxIS
Имеет место быть только в windows7 на следующих endpoins:
  • ALPC Port senssvc
  • ALPC Port IUserProfile2
  • named pipe \PIPE\atsvc
  • named pipe PIPE\srvsvc
appinfo 201EF99A-7FA0-444C-9399-19BA84F12A1A 1.0
Под vista sp2 имеет 3 метода:

  • RAiLaunchAdminProcess
  • RAiProcessRunOnce
  • RAiOverrideDesktopPromptPolicy
Под windows7 имеет 4 метода:

  • RAiLaunchAdminProcess
  • RAiProcessRunOnce
  • RAiLogonWithSmartCardCreds
  • RAiOverrideDesktopPromptPolicy
Висит на следующих endpoins:
  • ALPC Port senssvc
  • ALPC Port IUserProfile2
  • ALPC Port SECLOGON
  • named pipe PIPE\atsvc
  • named pipe PIPE\srvsvc
Нижеописанные 2 интерфейса также висят на этих же endpoints

IAisCOMInfo 5F54CE7D-5B79-4175-8584-CB65313A0E98 1.0
1 method
  •  RAiGetTokenForCOM
IAisMSIInfo FD7A0523-DC70-43DD-9B2E-9C5ED48225B1 1.0
1 method
  •  RAiGetTokenForMSI

nrpsrv.dll RPC interfaces

nrpsrv.dll - Name Resolution Proxy (NRP) RPC interface
Имеет место быть под windows7 на следующих endpoints:
  • ALPC Port dhcpcsvc6
  • ALPC Port dhcpcsvc
  • ALPC Port eventlog
  • ALPC Port Audiosrv
  • ALPC Port AudioClientRpc
  • named pipe \pipe\eventlogr
NameResolutionProxy 30ADC50C-5CBC-46CE-9A0E-91914789E23C version 1.0
2 methods:
  •  RpcNrpGetAddrInfo
  •  RpcNrpGetNameInfo

pcasvc.dll RPC interfaces

pcasvc.dll - Program Compatibility Assistant Service
PcaSvc 0767A036-0D22-48AA-BA69-B619480F38CB version 1.0
8 methods:
  •  RAiNotifyLaunchProcess
  •  RAiTagUpdateProcess
  •  RAiTagDeprecatedComponentProcess
  •  RAiTagUndetectedInstallerProcess
  •  RAiNotifyUserCallbackExceptionProcess
  •  RAiListTrackedApplications
  •  RAiMonitorControlPanelApplet
  •  RAiNotifyFailedUninstall
Висит на ALPC port trkwks и на named pipe \pipe\trkwks

memory management in windows

сроду бы не поверил что на хабре опубликуют чо-нть полезное, но и на старуху бывает порнуха бывает оказывается и такое
раз
два
три
С верификацией написанного есть проблема - например самые свежие из доступных сорцов windows - WRK - как всем известно есть куски w2k3, а из более новых версий windows насколько я знаю в инет не попадало ничего. Так что проверить как оно там на самом деле - весьма утомительное дело на несколько недель в отладчике и дизассемблере
Но в качестве гипотезы - вполне годные статьи

пятница, 5 ноября 2010 г.

ubpm.dll RPC interfaces

ubpm.dll - Unified Background Process Manager DLL
Все описанные интерфейсы имеют место только в windows7 и висят на следующих endpoints:
  • ALPC port ubpmrpc
  • ALPC port ntsvcs
Что характерно - оба порта открыты процессом services.exe
ubpmtaskhostchannel 22716894-FD8E-4462-9783-09E6D9531F16 version 1.0
4 methods:
  •  s_UbpmRpcOpenTaskHostChannel
  •  s_UbpmRpcCloseTaskHostChannel
  •  s_UbpmRpcTaskHostSendResponseReceiveCommand
  •  s_UbpmRpcTaskHostReportTaskStatus
ubpmrpc 33511F95-5B84-4DCC-B6CC-3F4B21DA53E1 version 1.0
0xf methods:
  •  s_UbpmRpcOpenRootHandle
  •  s_UbpmRpcCloseRootHandle
  •  s_UbpmRpcRegisterTriggerProvider
  •  s_UbpmRpcOpenTriggerProvider
  •  s_UbpmRpcGenerateTrigger
  •  s_UbpmRpcGenerateNotification
  •  s_UbpmRpcUnregisterTriggerProvider
  •  s_UbpmRpcCloseProviderHandle
  •  s_UbpmRpcRegisterTriggerConsumer
  •  s_UbpmRpcUnregisterTriggerConsumer
  •  s_UbpmRpcCloseConsumerHandle
  •  s_UbpmRpcOpenTriggerConsumer
  •  s_UbpmRpcControlTriggerConsumer
  •  s_UbpmRpcQueryTriggerConsumerStatus
  •  s_UbpmRpcConfigureTriggerConsumer

winlogon.exe RPC interfaces

Все описанные интерфейсы висят на автогенеренном ALPC port с префиксом WMsgKRpc
ISecureDesktop 12E65DD8-887F-41EF-91BF-8D816C42C2E7 version 1.0
5 methods:
  •  WlSecureDesktoprPromptingRequest
  •  WlSecureDesktoprConfirmationRequest
  •  WlSecureDesktoprCredmanBackupRequest
  •  WlSecureDesktoprCredmanRestoreRequest
  •  WlSecureDesktoprSimulateSAS

WMsgAPIs 76F226C3-EC14-4325-8A99-6A46348418AF version 1.0
Кроме упомянутого выше имеет место на named pipe InitShutdown (в vista) и ALPC port WindowsShutdown
4 methods:
  •  I_WMsgSendMessage
  •  I_WMsgSendPSPMessage
  •  I_WMsgSendNotifyMessage
  •  I_WMsgSendReconnectionUpdateMessage

WMsgKAPIs 76F226C3-EC14-4325-8A99-6A46348418AE version 1.0
Кроме упомянутого выше имеет место на named pipe InitShutdown (в vista) и ALPC port WindowsShutdown
2 methods:
  •  I_WMsgkSendMessage
  •  I_WMsgSendPSPMessage

четверг, 4 ноября 2010 г.

Masterminds of Programming - uml

а вот давеча читаю снова subj - главу про шарлатанскую технологию UML:
The language is too complex.We need to change that. Eighty percent of all applications can be designed with less than 20% of UML. In my company we have defined a pure subset of UML to become the Ъ Essential Unified Modeling Language.We also use a very different way of describing UML that is much more attractive to ordinary users. Traditional UML is designed for methodologists or tool vendors.
I would love to restructure UML as a set of domain-specific languages (DSLs). I would like to do that similar to the way were designed the Unified Process in my company.A DSL is an aspect of a modeling language (of which UML is an example). You create your modeling language as a composition of many such DSLs (aspects) in a way similar to how you compose a software system from many cross-cutting concerns.While I claim that the language was not designed for users but for methodologists and for tool vendors, I claim it was not even good for the latter groups.The semantics of UML are poorly defined. UML—in particular, UML 2.0—has included so many constructs from so many different methodological camps that it became impossible to define its semantics clearly. Like many other languages, UML became, as John Backus said about Ada, “fat and flabby.”
The focus was on concrete syntax (icons) and to some extent on static semantics, but we left the operational semantics undefined. I expected that we would get this critique since standard language design practice at that time was to use techniques like denotational semantics. We didn’t. We just wrote page after page that we knew were very hard to understand.
(c) Ivar Jacobson, один из авторов аферы собс-но
Граждане дико жгут по моему. Кто такие эти мифические жывотные - methodologists ?

картинка для медитации-3

справочное пособие для гоп-стопщиков и пикаперов, бгг
via

среда, 3 ноября 2010 г.

MpSvc.dll RPC interfaces

запчасть от Windows Defender
Висит на автогенеренном ALPC port с префиксом IMpService
IMpService C503F532-443A-4C69-8300-CCD1FBDB3839 version 1.0
0x30 methods:
  • ServerMpEnableFeature
  • ServerMpDisableFeature
  • ServerMpFeatureQueryStatus
  • ServerMpEventOpen
  • ServerMpEventClose
  • ServerMpEventQueryNotification
  • ServerMpOnDemandStartScan
  • ServerMpOnDemandQueryNotification
  • ServerMpOnDemandQueryScanResult
  • ServerMpOnDemandCancelScan
  • ServerMpOnDemandPauseScan
  • ServerMpOnDemandResumeScan
  • ServerMpOnDemandPersistScan
  • ServerMpOnDemandOpenScan
  • ServerMpOnDemandCloseScan
  • ServerMpOnDemandThreatOpen
  • ServerMpOnDemandThreatEnum
  • ServerMpOnDemandThreatClose
  • ServerMpScanOpenHistory
  • ServerMpScanEnumerateHistory
  • ServerMpScanCloseHistory
  • ServerMpScanDeleteHistory
  • ServerMpScanCleanOpen
  • ServerMpScanCleanClose
  • ServerMpScanCleanSetAction
  • ServerMpScanCleanPrecheck
  • ServerMpScanCleanPrecheckNotification
  • ServerMpScanCleanThreats
  • ServerMpScanCleanThreatsNotification
  • ServerMpScanCleanQueryInfo
  • ServerMpQuarantineEnumOpen
  • ServerMpQuarantineEnumerate
  • ServerMpQuarantineEnumClose
  • ServerMpQuarantineQueryInfo
  • ServerMpQuarantineRestoreThreat - вот этот метод кажется мне особенно многообещающим :-)
  • ServerMpQuarantineDeleteThreat
  • ServerMpQueryEngineVersion
  • ServerMpUpdateEngineSignature
  • ServerMpRollbackEngineSignature
  • ServerMpScanGenerateReport
  • ServerMpThreatStaticInfo
  • ServerMpQuerySystemInfo
  • ServerMpRpcConfigSetValue
  • ServerMpRpcConfigDelValue
  • ServerMpRpcElevationHandleOpen
  • ServerMpRpcElevationHandleAttach
  • ServerMpRpcElevationHandleClose
  • ServerMpRpcElevateCleanHandle

понедельник, 1 ноября 2010 г.

vista ws2_32.dll self-checking

Нашел тут под вистой sp2 32bit дико угарный кусок кода в ws2_32.dll - в ф-ции CheckForHookersOrChainers (вызываемой из WSAStartup):

                mov     eax, offset off_4B0F5510 ; указатель на таблицу имен
exported functions
                xor     esi, esi
loc_4B0DC7A2:
                push    dword ptr [eax] ; lpProcName
                push    ?gDllHandle@@3PAUHINSTANCE__@@A ; hModule
                call    ds:__imp__GetProcAddress@8 

                test    eax, eax
                jz      loc_4B0DA7A1
                cmp     eax, ?apfns@@3PAPAXA[esi] ; указатель на таблицу адресов exported functions
                jnz     loc_4B0DA7A1
                inc     edi
                mov     esi, edi
                shl     esi, 2
                lea     eax, off_4B0F5510[esi]
                cmp     dword ptr [eax], 0
                jnz     short loc_4B0DC7A2

Собственно все понятно - проверка на угон IAT, если имя или адрес, полученный через GetProcAddress не совпали - возвращаем -1 и WSAStartup в свою очередь вернет 10091 (WSASYSNOTREADY)
Угар в том что если пропатчить IAT после вызова WSAStartup - ничего больше не проверится
Ну и традиционно этот массив ?apfns@@3PAPAXA (бгг) не экспортируется, так что юзер лишен воможности запустить проверку IAT в любое другое время

воскресенье, 31 октября 2010 г.

audiodg.exe RPC interfaces

гугл про этот интерфейс не знает вообще ничего, хе-хе
Живет внутри процесса audiodg.exe, имеет место быть только в vista (в windows7 такого уже нет. Или просто хорошо маскируется). Висит на LPC port AudioDeviceGraph
AudioDG DE3B9BC8-BEF7-4578-A0DE-F089048442DB version 1.0
7 methods:
  •  AudioDGShutdownADG
  •  AudioDGGetStartupStatus
  •  AudioDGChallenge
  •  AudioDGGetEndpointStreamVpo
  •  AudioDGGetStreamVpoDescription
  •  AudioDGSetStreamVpoPolicySchemas
  •  AudioDGCloseStreamVpo

суббота, 30 октября 2010 г.

lsm.exe RPC interfaces

Тут граждане пытаются описать всякие новые RPC интерфейсы, появившиеся в висте, но конкретно этих я там не нашел. Все интерфейсы висят на LPC port LSMApi
TermSrvPrivate 11F25515-C879-400A-989E-B074D5F092FE version 1.0
6 methods:
  •  RpcGetUserToken
  •  RpcConnectTerminal
  •  RpcSystemShutdownStarted
  •  RpcGetRequestForWinlogon
  •  RpcReportWinlogonReply
  •  RpcGetReconnectId
TermSrvAdmin 1E665584-40FE-4450-8F6E-802362399694 version 1.0
2 methods:
  •  RpcBroadcastSystemMessage
  •  RpcSendWindowMessage
TermSrvSession 484809D6-4239-471B-B5BC-61DF8C23AC48 version 1.0
0x10 methods:
  •  RpcOpenSession
  •  RpcCloseSession
  •  RpcConnect
  •  RpcDisconnect
  •  RpcLogoff
  •  RpcGetUserName
  •  RpcGetTerminalName
  •  RpcGetState
  •  RpcIsSessionDesktopLocked
  •  RpcShowMessageBox
  •  RpcGetTimes
  •  RpcGetSessionCounters
  •  RpcGetSessionInformation
  •  RpcSwitchToServicesSession
  •  RpcRevertFromServicesSession
  •  RpcGetLoggedOnCount
TermSrvNotification 11899A43-2B68-4A76-92E3-A3D6AD8C26CE version 1.0
4 methods:
  •  RpcWaitForSessionState
  •  RpcRegisterAsyncNotification
  •  RpcWaitAsyncNotification
  •  RpcUnRegisterAsyncNotification
TermSrvEnumeration 88143FD0-C28D-4B2B-8FEF-8D882F6A9390 version 1.0
0xa methods:
  •  RpcOpenEnum
  •  RpcCloseEnum
  •  RpcFilterByState
  •  RpcFilterByCallersName
  •  RpcEnumAddFilter
  •  RpcGetEnumResult
  •  RpcFilterBySessionType
  •  RpcFilterByLicenseType
  •  RpcGetSessionIds
  •  RpcGetEnumResultEx

dnsapi.dll exports

xp.sp2 и xp.sp3 совершенно одинаковы

iphlpapi.dll exports

xp.sp2 и xp.sp3 совершенно одинаковы

lsasrv.dll RPC interfaces

ковырялось на vista sp2 32бита. Я знаю что это ацкий баян, но как ни странно там описаны далеко не все методы например lsarpc
Все перечисленные ниже интерфейсы висят на следующих endpoints внутри процесса lsass.exe:
  • pipe\lsass
  • pipe\protected_storage
  • LPC port protected_storage
  • LPC port audit
  • LPC port samss lpc
  • LPC port securityevent
s_ICryptProtect 11220835-5b26-4d94-ae86-c3e475a809de version 1.0
3 methods:
  •  s_SSCryptProtectData
  •  s_SSCryptUnprotectData
  •  s_SSCryptUpdateProtectedState
s_PasswordRecovery 5cbe92cb-f4be-45c9-9fc9-33e73e557b20 version 1.0
3 methods:
  •  s_SSRecoverQueryStatus
  •  s_SSRecoverImportRecoveryKey
  •  s_SSRecoverPassword
dssetup 3919286A-B10C-11D0-9BA8-00C04FD92EF5 version 0.0
1 method:
  •  DsRolerGetPrimaryDomainInformation
efsrpc C681D488-D850-11D0-8C52-00C04FD90F7E version 1.0
0x15 methods:
  •  EfsRpcOpenFileRaw
  •  EfsRpcReadFileRaw
  •  EfsRpcWriteFileRaw
  •  EfsRpcCloseRaw
  •  EfsRpcEncryptFileSrv
  •  EfsRpcDecryptFileSrv
  •  EfsRpcQueryUsersOnFile
  •  EfsRpcQueryRecoveryAgents
  •  EfsRpcRemoveUsersFromFile
  •  EfsRpcAddUsersToFile
  •  EfsRpcSetFileEncryptionKey
  •  EfsRpcNotSupported
  •  EfsRpcFileKeyInfo
  •  EfsRpcDuplicateEncryptionInfoFile
  •  EfsUsePinForEncryptedFiles
  •  EfsRpcAddUsersToFileEx
  •  EfsRpcFileKeyInfoEx
  •  EfsRpcGenerateEfsStream
  •  EfsRpcGetEncryptedFileMetadata
  •  EfsRpcSetEncryptedFileMetadata
  •  EfsRpcFlushEfsCache
lsarpc 12345778-1234-ABCD-EF00-0123456789AB version 0.0
0x66 methods:
  •  LsarClose
  •  LsarDelete
  •  LsarEnumeratePrivileges
  •  LsarQuerySecurityObject
  •  LsarSetSecurityObject
  •  LsarChangePassword
  •  LsarOpenPolicyRPC
  •  LsarQueryInformationPolicy
  •  LsarSetInformationPolicy
  •  LsarSetPolicyReplicationHandle
  •  LsarCreateAccount
  •  LsarEnumerateAccounts
  •  LsarCreateTrustedDomain
  •  LsarEnumerateTrustedDomains
  •  LsarLookupNames
  •  LsarLookupSids
  •  LsarCreateSecret
  •  LsarOpenAccount
  •  LsarEnumeratePrivilegesAccount
  •  LsarAddPrivilegesToAccount
  •  LsarRemovePrivilegesFromAccount
  •  LsarGetQuotasForAccount
  •  EfsSsoOnReconnect_WL
  •  LsarGetSystemAccessAccount
  •  LsarSetSystemAccessAccount
  •  LsarOpenTrustedDomain
  •  LsarQueryInfoTrustedDomain
  •  LsarSetInformationTrustedDomain
  •  LsarOpenSecret
  •  LsarSetSecret
  •  LsarQuerySecret
  •  LsarLookupPrivilegeValue
  •  LsarLookupPrivilegeName
  •  LsarLookupPrivilegeDisplayName
  •  LsarDeleteObject
  •  LsarEnumerateAccountsWithUserRight
  •  LsarEnumerateAccountRights
  •  LsarAddAccountRights
  •  LsarRemoveAccountRights
  •  LsarQueryTrustedDomainInfo
  •  LsarSetTrustedDomainInfo
  •  LsarDeleteTrustedDomain
  •  LsarStorePrivateData
  •  LsarRetrievePrivateData
  •  LsarOpenPolicy2
  •  LsarGetUserName
  •  LsarQueryInformationPolicy2
  •  LsarSetInformationPolicy2
  •  LsarQueryTrustedDomainInfoByName
  •  LsarSetTrustedDomainInfoByName
  •  LsarEnumerateTrustedDomainsEx
  •  LsarCreateTrustedDomainEx
  •  LsarSetPolicyReplicationHandle
  •  LsarQueryDomainInformationPolicy
  •  LsarSetDomainInformationPolicy
  •  LsarOpenTrustedDomainByName
  •  LsaITestCall
  •  LsarLookupSids2
  •  LsarLookupNames2
  •  LsarCreateTrustedDomainEx2
  •  CredrWrite
  •  CredrRead
  •  CredrEnumerate
  •  CredrWriteDomainCredentials
  •  CredrReadDomainCredentials
  •  CredrDelete
  •  CredrGetTargetInfo
  •  CredrProfileLoaded
  •  LsarLookupNames3
  •  CredrGetSessionTypes
  •  LsarRegisterAuditEvent
  •  LsarGenAuditEvent
  •  LsarUnregisterAuditEvent
  •  LsarQueryForestTrustInformation
  •  LsarSetForestTrustInformation
  •  CredrRename
  •  LsarLookupSids3
  •  LsarLookupNames4
  •  LsarOpenPolicySce
  •  LsarAdtRegisterSecurityEventSource
  •  LsarAdtUnregisterSecurityEventSource
  •  LsarAdtReportSecurityEvent
  •  CredrFindBestCredential
  •  LsarSetAuditPolicy
  •  LsarQueryAuditPolicy
  •  LsarEnumerateAuditPolicy
  •  LsarEnumerateAuditCategories
  •  LsarEnumerateAuditSubCategories
  •  LsarLookupAuditCategoryName
  •  LsarLookupAuditSubCategoryName
  •  LsarSetAuditSecurity
  •  LsarQueryAuditSecurity
  •  CredrReadByTokenHandle
  •  CredrRestoreCredentials
  •  CredrBackupCredentials
  •  LsarManageSidNameMapping
  •  CredrProfileUnloaded
  •  LsarAddLanmanConnection
  •  LsarCancelLanmanConnection
  •  LsarAddDfsConnection
  •  LsarCancelDfsConnection
  •  LsarIsDfsConnectionInUse
Update: под windows 7 в lsasrv.dll добавился еще один RPC interface
S_LSP_PRIVATE_DATA ACE1C026-8B3F-4711-8918-F345D17F5BFF version 1.0
2 methods:
  •  S_RPC_LspUpdatePrivateData
  •  S_RPC_LspReadPrivateData

    пятница, 29 октября 2010 г.

    lsasrv.dll exports

    одна из самых загадочных .dll в виндах - документация на нее практически отсутствует

    срывая покровы

    а вот давеча например читая древнее третье издание Руссиновича и Соломона (книжка 2000 года издания) наткнулся на любопытное описание некой запчасти к IIS (версии 4.0 если мне склероз не изменяет) - драйвер spud.sys, жывущий в ядре и типа ускоряющий работу IIS. И что-то это мне сильно напомнило - например линуксовый TUX. И полез я немедленно в гугл выяснять кто из них был раньше
    Список рассылки tux-list на redhate - TUX 1.0 released 30 сентября 2000 года. Пруфлинк
    IIS 4.0 вышел в 1998ом году. Пруфлинк
    Там впрочем про spud.sys ни слова не сказано, но вот есть например такая ссылка - там файл spud.sys датируется апрелем 1999 года
    Чо-то как-то не верится мне что линуксоиды не видели его в действии и не слизали идею

    среда, 27 октября 2010 г.

    rpcdump bug

    нашел давеча в rpcdump баг - утечку памяти и ресурсов
    Граждане не вызывают RpcMgmtEpEltInqDone после RpcMgmtEpEltInqBegin как советует документация.
    Так что при запуске в отдельном быстро дохнущем процессе оно незаметно, но если тот же код скопипастить в свой сервис, который дергает опрос rpc интерфейсов периодически, то через некоторое время почувствуете легкое недомогание будет заметна утечка памяти

    понедельник, 18 октября 2010 г.

    ncalrpc interfaces under vista

    а меж тем моя тулза для обнюхивания RPC интерфейсов практически работает и выдает под vista 32бита примерно следующее

    Masterminds of Programming

    читаю давеча subj - автор forthа Chuck Moore дичайше отжигает (и практически разжигает):
    The operating system is another concept that is curious.Operating systems are dauntingly complex and totally unnecessary. It’s a brilliant thing that Bill Gates has done in selling the world on the notion of operating systems. It’s probably the greatest con game the world has ever seen.
    An operating system does absolutely nothing for you. As long as you had something - a subroutine called disk driver,a subroutine called some kind of communication support, in the modern world, it doesn’t do anything else.In fact,Windows spends a lot of time with overlays and disk management all stuff like that which are irrelevant.You’ve got gigabyte disks; you’ve got megabyte RAMs. The world has changed in a way that renders the operating system unnecessary.
    Дедушка дико крут:
    Some 20 years ago I wanted to develop a tool to design VLSI chips. I didn’t have a Forth for my new PC, so I thought I’d try a different approach: machine language. Not assembler language, but actually typing the hex instructions.
    I built up the code as I would in Forth, with many simple words that interacted hierarchically. It worked. I used it for 10 years. But it was difficult to maintain and document. Eventually I recoded it in Forth and it became smaller and simpler.
    Учитывая что интервью взято в 2007 году - дедушке в 87ом, когда он вколачивал тонны hex-codes было почти 50 лет между прочим ! а вы говорите - dwordы в уме ксорить
    Дедушка предсказывает конец света:
    Legacy software is an unappreciated but serious problem.It will only get worse -not only in banking but in aerospace and other technical industries. The problem is the millions of lines of code. Those could be recoded, say in thousands of lines of Forth. There’s no point in machine translation, which would only make the code bigger. But there’s no way that code could be validated. The cost and risk would be horrendous. Legacy code may be the downfall of our civilization.
    Дедушка проповедует:
    Don’t anticipate.Don’t solve a problem that you think might occur in the future. Solve the problem you’ve got. Anticipating is very inefficient. You can anticipate 10 things happening, of which only one will, so you’ve wasted a lot of effort.
    Team work - much overrated. The first job of a team is to partition the problem into relatively independent parts. Assign each part to an individual. The team leader is responsible for seeing that the parts come together.
    Sometimes two people can work together. Talking about a problem can clarify it. But too much communication becomes an end in itself. Group thinking does not facilitate creativity. And when several people work together, inevitably one does the work
    Авторам компиляторов тоже досталось:
    Compilers are probably the worst code ever written.They are written by someone who has never written a compiler before and will never do so again. Another failing of compiler writers is the compulsion to use every special character on the keyboard. Thus keyboards can never become smaller and simpler. And source code becomes impenetrable
     Горячий привет авторам APL, бгг

    пятница, 15 октября 2010 г.

    port & alpc port owners

    Я тут уже писал как можно получить список локальных RPC портов.В этом способе нет абсолютно ничего примечательного - через NtOpenDirectoryObject открываем директорию L"\\RPC control" и читаем с помощью NtQueryDirectoryObject пока не вернется STATUS_NO_MORE_ENTRIES.
    Но еще хотелось бы иметь PID процесса-владельца этих ресурсов. Чтение доки не особо помогло - например есть такая официальная функция nt api ZwQueryInformationPort, которая имеет ровно один более чем бессмысленный classinfo PORT_INFORMATION_CLASS
    Пришлось как обычно кряхтя слазить с печи и делать все самому

    четверг, 14 октября 2010 г.

    IDA Pro 6.0

    пробовал сегодня днем поработать с новой версией IDA - это ужас и тихий кошмар
    Все доведенные до автоматизма последовательности нажатий кнопок - не работают больше.
    Например чтобы выйти без сохранения базы обычно жмется Alt-X, 2 раз Tab, пробел и Enter. Хрен там - теперь эта знакомая комбинация приводит к вызову Help. Без мыши теперь вообще ничего сделать не получается (по крайней мере старыми проверенными временем комбинациями кнопок). Особенно раздражает поведение gui на нажатие ctrl + tab

    Полез смотреть changelog - чо же там настолько ценного появилось чтобы терпеть эти мучения:
    • новый GUI - см. выше
    • новые камни - обычному пользователю такие сроду не встретятся (ну кроме arm может быть)
    • новые форматы файлов - треш какой-то, давно пора сделать нормальный биндинг к binutils
    • вот это дико понравилось -
      FLIRT: added parser for Mach-O object files (pmacho)
      Примерно часа три работы небось ушло на переточку otool из darwin cctools
    • Показ в отладчике stack frames, сломанный во всех версиях 5.x - так и не починили. Зато:
      debugger: non-integer register values can be displayed as hints
      Угарнейшее достижение, угу
    Дичайше негодую ! Так и придется для серьезной работы на 4.90 сидеть антиквариат рулит

      вторник, 12 октября 2010 г.

      кинохроники

      а вот например любите ли вы смотреть всякие старые кинохроники ?
      вот тащемта давеча смотрю я в пол-уха world war II in color: USA in war и дико выпадаю в осадок от следующей фразы
      К концу 1942ого года в армию США было призвано более 3х миллионов человек. Армейские дантисты выдрали у них почти 15 миллионов гнилых зубов
      Несложные расчеты показывают что это просто ад и содомия какая-то

      понедельник, 11 октября 2010 г.

      wtf ?

      вот например скопировал VBox image с vista 32бита с одной машины на другую - все настройки и версия VBox совершенно одинаковы
      На одной машине все отлично работает, а на другой падает в bsod:
      FAULTING_IP:
      dfsc!DfscFsctrlGetNetUses+4d
      8e151dcf f7402000004000  test    dword ptr [eax+20h],400000h ; в eax конечно-же 0

      ERROR_CODE: (NTSTATUS) 0xc0000005

      STACK_TEXT: 
      80c2ec04 8e15340c 83b255e8 83eeb9a8 00000010 dfsc!DfscFsctrlGetNetUses+0x4d
      80c2ec2c 818809c6 83b56c98 00000420 83b255e8 dfsc!DfscFileSystemControl+0xe8
      80c2ec44 81a827a3 83c6ed10 83b255e8 83b25658 nt!IofCallDriver+0x63
      80c2ec64 81a82f48 83b56c98 83c6ed10 000ea501 nt!IopSynchronousServiceTail+0x1d9
      80c2ed00 81a81c2e 83b56c98 83b255e8 00000000 nt!IopXxxControlFile+0x6b7
      80c2ed34 81886c7a 00000268 00000000 00000000 nt!NtFsControlFile+0x2a
      80c2ed34 77c85e74 00000268 00000000 00000000 nt!KiFastCallEntry+0x12a
      03c4fc28 77c84980 72992547 00000268 00000000 ntdll!KiFastSystemCallRet
      03c4fc2c 72992547 00000268 00000000 00000000 ntdll!NtFsControlFile+0xc
      03c4fc7c 729924a6 00000268 03c4fca8 03c4fca4 ntlanman!CDfsEnumConnectedNode::DfspGetNetUseEntryByIndex+0x65
      03c4fc9c 72992414 00000000 00000000 00000268 ntlanman!CDfsEnumConnectedNode::CDfsEnumConnectedNode+0xa4
      03c4fcbc 72992364 00000001 00000001 00000000 ntlanman!USE_ENUMNODE::USE_ENUMNODE+0x44
      03c4fce4 75c93077 00000001 00000001 00000000 ntlanman!NPOpenEnum+0x2ed
      03c4fd28 75c931cb 00000001 00000001 00000000 MPR!MprOpenEnumConnect+0x164
      03c4fdac 76aeaba2 00000001 00000001 00000000 MPR!WNetOpenEnumW+0x17a
      03c4fde0 76aeab28 00000001 00000001 00000000 SHELL32!CMountPoint::_InitNetDrivesHelper+0x29
      03c4fe00 76ae8439 00000000 76e572b8 00000000 SHELL32!CMountPoint::_InitNetDrives+0x58
      03c4fe1c 76b784a1 00000000 00000000 00000000 SHELL32!CMountPoint::_IsNetDriveLazyLoadNetDLLs+0x3c
      03c4fe48 76b77a8c 00000000 00000000 00000000 SHELL32!CMountPoint::_GetMountPointForDriveLetter+0x1d
      03c4fe5c 76b5be34 00000000 00000000 00000000 SHELL32!CMountPoint::GetMountPoint+0x2b
      03c4fe70 77bdc2c9 00000000 00000000 00000000 SHELL32!CheckDiskSpaceThreadProc+0xd
      WARNING: Stack unwind information not available. Following frames may be wrong.
      03c4fef4 7764d0e9 0185f84c 03c4ff40 77c619bb SHLWAPI!Ordinal197+0xe1
      03c4ff00 77c619bb 0185f84c 740a2be4 00000000 kernel32!BaseThreadInitThunk+0xe
      03c4ff40 77c6198e 77bdc224 0185f84c 00000000 ntdll!__RtlUserThreadStart+0x23
      03c4ff58 00000000 77bdc224 0185f84c 00000000 ntdll!_RtlUserThreadStart+0x1b

      Никто не сталкивался с такою бедою ?

      суббота, 9 октября 2010 г.

      oracle собирается купить amd

      пруфлинк
      надо было интелу вместо покупки mcafee (вместе с бездарным графоманом пыщхом) тоже какую-нть базу данных прикупить, бгг

      пятница, 8 октября 2010 г.

      open source

      золотые слова: фриварь культивирует тотальную безответственность разработчика перед потребителем!
      Именно так - и еще их клинические навязчивые идеи про эффект тысячи глаз и прочие биологические уродства
      Особенно показателен например топик на lor про выход IDA Pro 6.0 - комменты там шедевральны, я ржал как подорванный:
      для отладки есть GDB
      бгг

      rpcss under windows 7

      А вот например список rpc интерфейсов, которые регистрирует rpcss.dll под windows7:
      • IActivationKernel {9B8699AE-0E44-47B1-8E7F-86A461D7ECDC}
      • ILocalObjectExporter {E60C73E6-88F9-11CF-9AF1-0020AF6E72F4}
      • IOXIDResolver {99FCFEC4-5260-101B-BBCB-00AA0021347A}
      • ISCM {412F241E-C12A-11CE-ABFF-0020AF6E7A17}
      • ISCMActivator {00000136-0000-0000-C000-000000000046}
      • IMachineActivatorControl {C6F3EE72-CE7E-11D1-B71E-00C04FC3111A}
      • IRemoteActivation {4D9F4AB8-7D1C-11CF-861E-0020AF6E7C57}
      • ISystemActivator {000001A0-0000-0000-C000-000000000046}
      • IROT {B9E79E60-3D52-11CE-AAA1-00006901293F}
      А epmp {e1af8308-5d1f-11c9-91a4-08002b14a0fa} и localepmp {0b0a6584-9e0f-11cf-a3cf-00805f68cb1b} там и нету. Начинаю испытывать легкое беспокойство

      Update: под windows7 epmp, localepmp и DbgIdl живут в модуле RpcEpMap.dll

      windbg & rpc

      наткнулся тут давеча на очередной высер пыщъха - якобы windbg можно использовать как RPC monitor. Проверить изложенное проще простого:
      !load rpcexts
      !getendpointinfo
      Searching for endpoint info ...
      OpenRPCDebugEndpointInfoEnumeration failed: 1734
      !listcalls
      RPC_SERVER at 0x15c980
      &RpcAddressDictionary(RPC_SIMPLE_DICT) - 0x15c980
      Unable to get field cDictSize of type SIMPLE_DICT at 0x15c980
      Более того - ровно то же самое windbg выдает на vista checked build.
      Интересно он вообще проверяет хоть что-нть в своих обширных простынях, описывающих поток нездорового сознания ? Никогда не пытайтесь использовать русскоязычное мычание странных персонажей - всегда нужно сверяться с более правильными источниками

      понедельник, 4 октября 2010 г.

      hal.dll exports

      xp sp2 & xp sp3 и vista sp1 & vista sp2 совершенно идентичны

      RPC servers hijack

      Внезапно придумал тут предельно простой и наверняка дико баянистый способ зная UUID RPC интерфейса найти его DispatchTable с адресами функций и сделать с ними всякое.
      Для начала давайте внимательно посмотрим на прототип функции RpcServerRegisterIf2

      ept_lookup

      я тут все выходные бухал и гадил в комментах ломал голову над одним простым вопросом - вот например у нас есть GUID RPC интерфейса и мы хотим подключиться по сети к некоей машине, на которой как мы считаем есть этот RPC сервер. Через какой именно механизм мы сможем найти порт/транспорт, куда нужно дико ломиться например ?
      Посему выходные были безнадежно испорчены проведены в отладчике и дизассемблере, зато теперь я в общих чертах знаю ответ но вам не скажу - через загадочный сервис rpcss, который сама MS в целях конспирации называет почему-то "Distributed COM Services" (так в version info rpcss.dll написано, ага)
      Итого механизм примерно такой - rpcss.dll слушает named pipe с именем epmapper (рекомендую погуглить - результаты феерические), на котором висит интерфейс Endpoint Mapper
      Дальше дело техники и опыта, по крайней мере теперь известно в каком модуле и примерно куда можно ставить грязные хуки и все такое. С другой стороны эту IFObjList извлечь стат. анализом весьма непросто будет
      Насколько я понял в той же rpcss.dll живет и другая полезная штука - Running Object Table

      Дичайше поражает в механизме RPC практически полное отсутствие документации - например интерфейс Endpoint Mapper якобы описан в некоей книге DCE 1.1: Remote Procedure Call, которую якобы можно скачать нахаляву, но при этом требуют номер телефона и вообще слишком много персональных данных.
      Руссинович в своем 5ом издании (в 3ем впрочем тоже) посвятил RPC целых 5 (!) страниц и ровно 2 картинки. А власти скрывают !

      Самое угарное что при регистрации этого интерфейса в rpcss перед вызовом стандартной RpcServerRegisterIf2 вызывается некая традиционно недокументированная функция I_RpcSystemFunction001, бгг

      вторник, 28 сентября 2010 г.

      msrpc.sys exports

      А вот например начиная с vista  rpc еще и в ядре живет в драйвере msrpc.sys
      Список драйверов на чистой windows 7, имеющих в своем импорте ссылки на msrpc:
      • afd.sys
      • appid.sys
      • fwpkclnt.sys
      • ksecdd.sys
      • netio.sys
      • ntfs.sys
      • srvnet.sys
      • tcpip.sys
      • tunnel.sys
      На висте правда список значительно скромнее:
      • fwpkclnt.sys
      • netio.sys
      • tcpip.sys
      Собственно сами экспортируемые символы (они одинаковы на vista, vista sp2 & w7, так что в одну табличку все свел и отличаются они только битностью)

      воскресенье, 26 сентября 2010 г.

      и еще про stuxnet

      Первую иранскую АЭС заразил компьютерный вирус
      "Лаборатории Касперского" - лидер потребительского рынка в России, странах СНГ и Балтии. За прошедший год "ЛК" стала безусловным лидером в некоторых странах: Иран, ЮАР, Ливия, где она переместилась по консьюмерским продажам на первое место
      отсюдова - между прочим датировано 1 сентября 2010.

      Чисто риторический вопрос - что случится раньше - ад замерзнет или Спасатели Вселенной™ хоть раз признаются что они дико обосрались ?

      RPC enumeration

      Поскольку в ответ на критическую заметку про ловлю stuxnet мне кинули предъяву в духе "а ты кто такой и сам ловить RPC интерфейсы не умеешь", то пришлось озаботиться данным вопросом
      Гугл сказал мне что технология для rpc interfaces enumeration уже 9 лет как известна - rpctools
      Используются при этом три вещи:
      • список зарегистрированных в системе rpc ports, который можно посмотреть например в WinObj в директории \RPC Control
      • совершенно официальная функция RpcMgmtInqIfIds из RPCRT4.dll
      • пара не менее официальных функций RpcMgmtEpEltInqBegin & RpcMgmtEpEltInqNext
      Далее берется список well known ms rpc named pipes и можно найти интерфейсы, которых на чистой машине быть не должно

      Процесс можно автоматизировать даже, я думаю - написать к тому же perlу xs модуль для выгребания имен портов из \RPC Control (через ф-ции NtOpenDirectoryObject & NtQueryDirectoryObject) и вызывать ifids.exe для всех из них. Можно также запросить в каких процессах эти порты открыты (Process Explorer так умеет делать например)

      Возвращаясь к исходному вопросу - какой онтевирус умеет проверять зарегистрированные в системе RPC интерфейсы ?

      суббота, 25 сентября 2010 г.

      stuxnet

      тут производители т.н. онтевирусов с выпученными глазами закатили истерику про stuxnet - типа караул, цыбервойна покупайте наших слонов и прочий обычный в подобных случаях маркетинговый бред
      Тем временем по прочтении довольно подробного описания можно сделать следующий вывод - несмотря на кучу 0-days и векторов распространения палится присутствие этого поделия крайне примитивными дедовскими методами десятилетней давности- достаточно совершенно банально просканить содержимое памяти всех процессов и сравнить с содержимым файлов с диска (и про древние трюки с угоном IAT & EAT еще не забыть) + посмотреть наличие нотификаторов в kernel mode - например в IopFsNotifyChangeQueueHead & PspCreateProcessNotifyRoutine
      А еще было бы недурно посмотреть какие RPC интерфейсы зарегистрированы в системе и в каких процессах, но по моему ни один av такое не умеет. Да чо там, я тоже не умею

      Выводы - непечатно матом делайте сами

      среда, 22 сентября 2010 г.

      dlopen notifiy

      а вот скожите мне - правда ли в linux никак не можно поставить штатными средствами нотификатор на событие загрузки/выгрузки программой модуля ? Я тут покурил давеча в стотыщпервый раз сорцы ld-linux.so - ад и содомия, риальне, причем за последние десять лет все стало еще страшнее пользоваться этим невозможно категорически
      И эти люди еще смеют поливать всячески самую лучшую в мире операционную систему !

      суббота, 18 сентября 2010 г.

      race condition attacks

      пришлось мне тут на старости лет изучать создание оголтело многопоточных программ и после изнуряющего чтения разнообразных книжек возник у меня крайне глупый вопрос - а существуют в природе какие-нть инструменты (полагаю типа fuzzers, только перебирающие комбинации из временных задержек), которые умели бы делать вид находить subj ?
      Вот например частный случай таких атак - double fetching
      Гугл также говорит что бывают всякие разные случаи и их чуть более чем дофига, что характерно

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

      среда, 15 сентября 2010 г.

      aslr

      дико угарная технология - с одной стороны мы помещаем ntdll.dll в память по псевдослучайным адресам (на самом деле их 256 штук всего, так что анекдот про миллиард кетайцев, вводящих пароль на сервере пентагона - это грустная реальность), а с другой
      • адрес ntdll.dll одинаков во всех процессах. Ибо ядро при старте зачитывает некоторое количество экспортируемых из ntdll функций и периодически вызывает их просто по указателю
      • если например в результате 256ой попытки эксплойт наконец получил управление - то можно получить TEB, из него PEB и дальше пройтись по списку PEB.Ldr.InLoadOrderModuleList например - там все указатели лежат в открытом виде (даже RtlEncodePointer не используется, в чем может убедиться любой желающий, продизассемблировав например функцию ntdll LdrpUpdateOrderLinks). Код уместится байт в 60 примерно
      Если кто не читал например - дичайше рекомендую

      воскресенье, 12 сентября 2010 г.

      глядя в окно

      русская народная осенняя песня "ой морось-морось"

      ndis!_NDIS_IF_PROVIDER_BLOCK

      бонус-трек к жалким описаниям структур ndis
      Начиная с висты в ndis появилась пара функций NdisIfRegisterProvider и NdisIfDeregisterProvider
      WinDbg традиционно не умеет показывать какие провайдеры были зарегистрированы в системе, так что запускаем дизассемблер например

      суббота, 11 сентября 2010 г.

      многопоточность в linux

      поимел тут следующую содержательную беседу с весьма мною уважаемым человеком, который уже лет 12 (если не больше) занимается server-side программированием под всякие разные unix:
      > на серверсайде тредов вообще быть не должно
      обоснуй. я серьезно спрашиваю
      > треды - легкие процессы, живущие в одном процессе в его хипе и стеке, за ними ос вообще не следит как за процессами по таблице процессов. отлаживать такое говно невозможно, как и наращивать.
      за счет этого как раз и достигается профит - они юзают одну и ту же память
      > промышленное использование тредов на серверсайде есть только у:
      mysql, какое это говно - знают все.

      java апликухи типа томкатов или веб сфер, но там жаве везет, т.к. по протоколу http 1.1 рано или поздно коннект отвалится и тред уничтожается, иначе падение неминуемо.

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

      треды с мьютексами на то и легкие процессы, чтобы запускаться на пару сотых секунды и пропадать. у меня к примеру в серверном фреймворке вообще нет
      операций new он же alloc, т.к. при старте отхавал гигов десять шареной памяти,
      и конкурентный доступ через семафоры. на весь фреймворк хватает одного массива семафоров с количеством в нем 9 штук. и всех делов
      вообще все нормальные серверные решения сводятся к очень ограниченному объему:
      надо быстро сделать говна кусок и веб - apache + mod_php,
      так пхпистов развелось за 10 лет дох*я и готовы работать за еду.
      надо что-то мощное и на нагрузках - c++ + libs + ipcs.

      надо базы данных и есть бабло - оракл, лучшая платная реляционная дб.
      бабла нету - постгрес, лучшая бесплатная.

      все остальные жавы, питоны, отмиращий перл, руби, и прочие байтмашины
      и говнотехнологии типа xml с еб*нутыми xslt и расширениями - оцтой и говно.
      95% серверного инструментария и технологий можно смело на помойку унести.
      они созданы для раздувания интернет и вообще айти пузыря.
      Дальше были простыни цыфр и мата
      Надо много подумать

      NDIS object types

      смотрел я давеча примерчик network\ndis\filter из wdk7, и потратил довольно большое количество времени на отыскание всяких констант вроде NDIS_OBJECT_TYPE_DEVICE_OBJECT_ATTRIBUTES
      Выяснилось что их определения лежат в файле inc\api\ntddndis.h, так что перепощу их здесь (мало ли - может у кого wdk нету например)

      пятница, 10 сентября 2010 г.

      gcc atomic built-ins

      с немалым интересом обнаружил давеча, что библиотека pthreads не имеет поддержки атомарных операций 21век на дворе есличо
      гугл сказал что они имеются в наличии в gcc - и таки не обманул. Опыты показали что gcc настолько умен, что если результат функции не используется, то например вызов __sync_fetch_and_add(&some_var, 1) и вовсе превращается в lock inc [some_var]
      Их правда не так чтобы особо много - с семейством Interlocked функций под windows не сравнить, но работает, да даже удивительно
      Казалось бы все хорошо, но вот тут сказано, что появилась эта возможность начиная  с gcc версии 4.4.0, который был выпущен аж в апреле 2009 года ! Я не буду злорадствовать как линуксоиды писали свои гениальные многопоточные программы до 2009 года, но это просто - ...

      И вот все у них так - дегенеративная совершенно os, отставшая от windows лет этак на 15

      четверг, 9 сентября 2010 г.

      ntdll official hooks

      Не так давно я выкладывал ссылки на catalog of NTDLL kernel mode to user mode callbacks
      В ntdll.dll есть и некоторое количество экспортируемых функций, позволяющих user mode программам ставить всякие разные хуки и callbacks. И некоторые из этих функций даже документированы !
      Соотв-но я сугубо для себя запишу тут некоторые из них. Память алкоголика - вещь загадочная, так что список наверняка не полон, а большую часть я просто не знаю например

      вторник, 7 сентября 2010 г.

      profiler-driven linker

      навеяло тут чтением всяких разных умных книжек
      Вот например у нас есть некая прога и мы хотим выжать из нее максимум производительности кисонька, еще капельку. Как известно у современных процессоров есть кэш, код из которого исполняется на порядок быстрее, чем из RAM. Можно было бы собрать профайлером граф вызовов функций, найти в нем самые тесно (по числу вызовов во время тестовых прогонов) связанные подграфы, и подсунуть эту информацию линкеру для генерации окончательной версии программы, чтобы он сложил эти функции рядом. Тогда при исполнении они скорее всего попадут в кэш все сразу, что должно дать некоторый profit в виде довольно ощутимого прироста производительности. Можно кстати аналогичный трюк исполнить и со статическими данными программы.
      Более того, поскольку у разных процессоров даже того же Intel размер кэша отличается - линкер мог бы заточить прогу под конкретно наш процессор

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

      Update: все украдено придумано до нас - visual studio 2005 умеет делать практически вышеописанные действия под именем profile-guided optimization:
      Block Layout. In this optimization, we form the hottest paths through a function, and lay them out such that hot paths are spatially located closer together. This can increase the utilization of the instruction cache and decrease the working set size and number of pages used.