Jeśli chodzi o zasadę działania HiperDrop, to jest trywialna. Podłącza się on do procesu, ściąga całą jego pamięć (w przeciwieństwie do LordPE / OllyDump, to narzędzie ściąga całą pamieć procesu, a nie tylko dany image PE), po czym zapisuje ją na dysk.
Podłączanie się do procesu jest zaimplementowane na dwa sposoby:
1. OpenProcess
2. albo korzystając z API debugera
Szukanie zaalokowanej pamięci do zrzucenia również jest zrobione na dwa sposoby:
1. VirtualQueryEx
2. albo brute-force'ową metodą która polega na wywołaniu ReadProcessMemory na każdej stronie procesu, bez uprzedniego sprawdzania czy strona jest w ogóle zaalokowana
Jeśli chodzi o output, to tutaj są "aż" trzy sposoby do wyboru:
1. każdy ciągły blok pamięci zapisywany jest w oddzielnym pliku
2. lub jest tylko jeden plik, w którym wszystkie istniejące strony pamięci są zapisywane po sobie
3. lub jak wyżej, z tą różnicą że w miejsce "nieistniejących" stron wrzuca się ciąg zer binarnych
Anyway, HiperDrop jest open source (szczegóły w pliku License.txt), napisany w C++, i może się przydać przy zabawie z malware lub ogólnie podczas reverse'owania różnych rzeczy (mi się przydawał ;>)
Download:
HiperDrop-0.0.1.zip (63 KB)
Paczka zawiera:
HiperDrop.cpp - źródło (jakieś 900 linii kodu)
HiperDrop.exe - exek pod Windowsa, utworzony przez MinGW GCC
License.txt - zgadliście! to plik z licencją ;)
Readme.txt - trochę więcej detali na temat HiperDrop
Na liście TODO znajduje się obecnie kilka priorytetowych rzeczy:
* wygenerowany plik .map (tj. ze spisem zrzuconych bloków pamięci) powinien zawierać dodatkowe informacje, takie jak prawa dostępu do pamięci, entropia, co to za blok (PEB/stos/etc), etc
* dodać ściąganie pamięci bez używania ReadProcessMemory, korzystając z wstrzykniętego kodu który prześle dane po pipe'ach
Dodatkowo, rozważam dodanie ściągania zawartości pamięci z trybu jądra, ale w sumie już takie narzędzie istnieje - TraceHook by j00ru. Można o tym poczytać tutaj (0.0.1) i tutaj (0.0.2).
By the way...
There are more blog posts you might like on my company's blog: https://hexarcana.ch/b/
Sporo rzeczy TODO można też znaleźć grepując źródło na frazę "TODO" :)
I w sumie tyle. Więcej info na temat używania i budowy można znaleźć w Readme.txt i/lub pisząc HiperDrop -h.
Komentarze, jak zwykle, mile widziane!
Comments:
Cool ;) Cieszę się że się przyda ;)))
Add a comment: