Kiedy otwieramy plik binarny Windowsmoże wyglądać jak nieczytelny zbiór bajtów, ale Często tekst, który nie jest widoczny gołym okiem, jest czytelny. Te ciągi znaków ujawniają trasy, nazwy bibliotek, wiadomości z błąd, wskaźniki kompilacji, a nawet bezcenne wskazówki kryminalistyczne. Szybkie ich wyodrębnienie za pomocą odpowiednich narzędzi pomaga nam zrozumieć, czego dotyczy plik wykonywalny, bez konieczności debugowania lub demontażu.
W tej praktycznej i dobrze uzasadnionej wycieczce zobaczysz, jak korzystać ciągi.exe (Sysinternals) i jego odpowiednik w systemie Linux, jak możemy Ci pomóc PowerShell jak zeskrobać zawartość (w tym strumienie NTFS), jak interpretować sygnały z podpisy i certyfikatyi na co zwrócić uwagę, gdy tekst jest zamaskowany steganografia lub techniki zaciemniania. Ponadto przyjrzymy się kluczowym narzędziom, takim jak certutil, PEStudio, ExifTool, OPLĄT, chodnik lub apartament Narzędzie ZWSP dla niewidzialnych znaków, dzięki czemu możesz wyśrodkować ujęcie od pierwszej minuty.
Czym są ciągi znaków i dlaczego są istotne w pliku binarnym?
Łańcuch to nic więcej niż sekwencja bajtów interpretowane za pomocą kodowania (ASCII, UTF-8, UTF-16/Unicode itp.). W plikach binarnych systemu Windows PE pojawiają się naturalnie: nazwy plików importowane funkcje, wiadomości dla użytkownika, trasy, Manifesty XML, identyfikatory certyfikatów lub ostrzeżenia DOS, takie jak „Tego programu nie można uruchomić w trybie DOS”. Wszystkie z nich się liczą: co program robi, czego potrzebuje i jak się nazywa.
Plik wykonywalny pokazuje wywołania takie jak LoadLibrary, GetProcAdres o Czy Debugger jest obecny sugeruje określoną dynamikę (ładowanie modułów, rozdzielczość API środowiska wykonawczego, kontrole antydebugowe). Odniesienia do VeriSign, Microsoft lub OCSP/CRL wskazują na osadzony podpis cyfrowy. I chociaż wynik ekstrakcji ciągu znaków zwykle zawiera szum i fałszywe alarmy, krytyczne spojrzenie pozwala nam uzyskać tory klasyfikacyjne bardzo cenne.
Rodzaje analiz i od czego zacząć, aby nie tracić czasu
Zanim zaczniesz demontaż, warto zorientować się, że praca nad plikami binarnymi jest często podzielona na analiza statyczna (niewykonany), dynamiczny (obserwując ich zachowanie) i analiza kodu (statyczny/dynamiczny), jeśli chcesz zająć się odwracaniem i debugowaniem. Rozpoczęcie od statycznego ma sens: Jest szybki, bezpieczny i umożliwia klasyfikację próbka lub plik wykonywalny, który masz w ręku.
Rozsądny przepływ obejmuje: obliczanie hasze (SHA-256 itp.) w celu sprawdzenia integralności, zidentyfikowania typu pliku i jego architektury (na przykład, czy jest to PE32 32-bit) i skonfigurować odizolowane środowisko. Praca w maszynie wirtualnej (Windows w przypadku dynamicznych, Linux/Remnux w przypadku narzędzi) zapewnia bezpieczeństwo i elastyczność; jeśli masz do czynienia z wieloma maszynami wirtualnymi, sprawdza, czy próbka jest identyczna we wszystkich z nich za pomocą hasza.
Ustalono, że jest to binarny PE, dotyka struny do scratchuOszczędza czas i pozwala wykryć wszystko, od komunikatów wewnętrznych po konfiguracje sieciowe i punkty końcowe. Jeśli plik wykonywalny jest znany (ponieważ pochodzi z repozytorium), możesz już mieć „spoilery”; w przypadku nieznanych próbek wartość jest jeszcze większy.
Wyodrębnij tekst w systemie Windows za pomocą strings.exe, FLOSS i innych

W systemie Windows najbardziej bezpośrednią rzeczą jest ciągi.exe z Sysinternals. To narzędzie skanuje plik i zrzuca czytelne sekwencje Wykrywa. Używaj go jako bazy, a jeśli wynik jest zbyt zaszumiony, polegaj na filtrach i porównaj z innymi narzędziami. Typowy przypadek użycia to:
strings.exe binario.exe > cadenas.txt
Znajdziesz tu wszystko: od klasycznego DOS-a do listy bibliotek DLL importowane, manifest osadzony w XML, odniesienia do OCSP/CRL a nawet nazwy firm certyfikujących. Celem jest oddzielenie ziarna od plew:Czy istnieją komunikaty specyficzne dla programu, istotne zmienne, ścieżki lub domeny, funkcje wskazujące na możliwości?
Jeśli podejrzewasz zaciemnianie lub pakowanie (UPX, proste XOR na danych), spróbuj OPLĄT (FireEye/FLARE). FLOSS próbuje odkryj ciągi znaków skonstruowane w czasie wykonywania i dekodowane w locie, czego strings.exe nie widzi. Jeśli FLOSS zwraca tylko ciągi znaków, możesz wskazać bardziej rozbudowane zaciemnianie lub że próbka po prostu nie zawiera zbyt wiele interesującego, czytelnego tekstu.
Zawsze uzupełniaj wizualizatorami takimi jak PEStudio i ExifTool dla metadanych: pierwsza grupuje wskaźniki (importy, sekcje, zasoby, podpis), a druga to dzika karta dla każdego pliku, który może zawierać przydatne metadane. porównać wyniki między narzędziami zmniejsza liczbę fałszywych alarmów.
Z perspektywy rozwoju, jeśli obawiasz się, że Twoje logi lub wiadomości zostaną ujawnione w pliku binarnym, istnieją strategie takie jak: haszowanie literałów podczas kompilacji (metaprogramowanie/UDL), użyj tablice znaków/szesnastkowe zamiast literałów lub stosowania łatka po kompilacji który zastępuje tekst jego zaszyfrowaną wersją. Każde podejście ma swoje wady i zalety: czasy kompilacji starsze wersje, ograniczona przenośność (np. VS2013 i C++14) lub złożoność zachować integralność pliku wykonywalnego. Uważaj: nawet jeśli zaciemnisz tekst, narzędzia takie jak FLOSS czy analiza dynamiczna mogą zrekonstruować ciągi znaków w trakcie wykonywania.
Robienie tego samego w systemie Linux/WSL: polecenie strings i kilka sztuczek
Jeśli wolisz terminal Linux (lub używasz WSL), masz polecenie smyczki z GNU, z przydatnymi opcjami do precyzyjnego dostrajania wyników. Minimalne użycie to:
strings ejemplo.bin
Aby zignorować śmieci i skupić się na łańcuchach o określonej wielkości, pociągnij -n (lub -−−bajtów):
strings -n 10 ejemplo.bin
Kiedy musisz wiedzieć gdzie jest każdy ciąg wewnątrz pliku, dodaj -t z systemem szesnastkowym lub dziesiętnym:
strings -t x archivo.bin
Jeśli obsługujesz wiele plików binarnych, możesz przekazać je wszystkie naraz, łańcuch z głową aby szybko rzucić okiem lub wymusić kodowanie -e (np. UTF-16LE w systemie Windows):
strings archivo1.bin archivo2.bin | head -n 100
strings -e S archivo.bin
Te podstawy w połączeniu z grep/awk umożliwiają: szukaj wzorców konkretne (adresy URL, trasy, rozszerzenia, podobne do Yara). Przy pierwszym sprawdzaniu oszczędność czasu wynosi brutalny.
PowerShell do odczytywania alternatywnej zawartości NTFS, plików binarnych i strumieni
PowerShell nie służy wyłącznie do automatyzacji zadań systemowych: Pobierz zawartość Możesz przeglądać pliki w postaci tekstu lub bajtów, a także je odczytywać Alternatywne strumienie danych (ADS) w systemie NTFS. W przypadku dużego pliku tekstowego wybierz tryb standardowy (wiersz po wierszu) lub odczyt w formacie RAW:
# Texto línea a línea
Get-Content -Path .\archivo.txt
# Todo el contenido en una sola cadena
Get-Content -Path .\archivo.txt -Raw
Kiedy jesteś zainteresowany tylko koniec (np. rosnące kłody), użyj -Ogon o -Całkowita liczba ograniczyć:
# Última línea
Get-Content .\archivo.txt -Tail 1
# Primeras 5 líneas
Get-Content .\archivo.txt -TotalCount 5
Jeżeli plik jest binarny i chcesz go tak traktować, dodaj -AsByteStream (lepiej obok -Surowy) aby otrzymać [bajt[]] i przetworzyć go bez próby konwersji czegokolwiek przez program PowerShell:
$bytes = Get-Content -Path .\binario.exe -AsByteStream -Raw
$bytes.Length
Prawdziwym hitem w systemie NTFS jest ADS: „ukryte” dane, które współistnieją z plikiem głównym. Możesz wyświetlić i odczytać strumienie za pomocą parametru -Strumień:
# Ver streams de un fichero
Get-Item -Path .\sospechoso.txt -Stream *
# Leer el stream primario y uno alternativo
Get-Content -Path .\sospechoso.txt -Stream ':$DATA'
Get-Content -Path .\sospechoso.txt -Stream 'NewStream'
Aby uzyskać dokładne ścieżki ze znakami specjalnymi, użyj -ŚcieżkaDosłowna. I pamiętaj o tym -Filtr, -Włączać y -Wykluczać pomóc udoskonalić partie plików bez konieczności ponownego wyważania otwartych drzwi.
Podpis cyfrowy, metadane i informacje zawarte w certyfikatach
Podczas ekstrakcji ciągów znaków często można natknąć się na nazwy CA (VeriSign, Thawte, Microsoft), ścieżki CRL/OCSP, a nawet ciągi manifestu. Sugeruje to, że plik binarny można podpisaćW systemie Windows sprawdź właściwości pliku i jeśli chcesz coś skryptowalnego, pobierz z Pobierz-AuthenticodeSignature w programie PowerShell w celu potwierdzenia podpisu i jego ważności (unieważnienia, daty itp.).
Może również pomóc certutil, scyzoryk szwajcarski dla certyfikatów wbudowanych w system Windows. Do celów (kontrola tekstu i struktury) wyróżniają się następujące elementy:
- -wysypisko: Zrzuca informacje o plikach i konfiguracji (przydatne do przeglądania atrybutów ASN.1 i powiązanych ciągów).
- -asn: Analizuje zawartość ASN.1 z .cer, DER lub PKCS#7.
- -dekodować / -kodować:dekoduje/koduje Base64 i -decodehex / -encodehex dla systemu szesnastkowego.
- -plik skrótu: oblicza skrót pliku (MD5, SHA1, SHA256 itd.).
- -sklep, -weryfikujsklep, -viewstore:kontrola magazynów certyfikatów.
- -zweryfikować:Sprawdzanie łańcuchów certyfikatów i list CRL.
Praktyczne przykłady, które zaoszczędzą Ci czas: dekodowanie blobu Base64 które wyodrębniłeś za pomocą ciągów znaków, aby sprawdzić, czy po drugiej stronie znajduje się tekst; lub wykonaj -wysypisko podejrzanego pliku w celu zlokalizowania widoczne pola które struny zostały pominięte:
# Decodificar Base64 a binario
certutil -decode in.txt out.bin
# Decodificar hex a binario
certutil -decodehex in.hex out.bin
# Hash rápido
certutil -hashfile binario.exe SHA256
# Vista ASN.1
certutil -asn firma.der
Uważaj na podpisy: fakt, że plik wykonywalny zawiera odwołania do certyfikatów, nie oznacza, że weryfikacja jest ważnaWygasłe lub odwołane certyfikaty sprawiają, że system traci zaufanie do podpisu, nawet jeśli plik binarny zachowuje metadane z nazwami urzędów certyfikacji. Ta rozbieżność jest również wskaźnikiem należy wziąć pod uwagę przy triażu.
Kiedy tekst jest, ale nie jest widoczny: steganografia w plikach
Nie cały „ukryty” tekst pochodzi z PE: często jest on ukryty w dokumentach, obrazach lub plikach audio przez steganografiaWażne jest, aby wiedzieć, jak rozpoznawać powszechnie stosowane techniki, aby nie przeoczyć ukrytych wiadomości, które pliki binarne mogłyby zawierać. pobierz lub wygeneruj.
En zwykły tekst, klasyczny kamuflaż wykorzystuje dodatkowe spacje/tabulatory na końcu linii (0/1) niewidoczne znaki Unicode, takie jak Łącznik/niełącznik o zerowej szerokościlub zamienniki homoglify (litery niemal identyczne wizualnie, inny kod). Narzędzia takie jak Cyberszef Służą do liczenia postaci i demaskowania. Jeśli chcesz od razu przejść do niewidzialności, Narzędzie ZWSP znacznie ułatwia sprawę:
$ git clone https://github.com/TwistAtom/ZWSP-Tool.git
$ cd ZWSP-Tool
$ chmod +x install.sh
$ ./install.sh
# Detectar ZWSP con marcadores
$ zwsp-tool detect -P path_to_file/suspicious_text.txt
# Limpiar ZWSP
$ zwsp-tool clean -P path_to_file/suspicious_text.txt
# Incrustar/extractar con cifrado AES
$ zwsp-tool -o result.txt embed -p "Public text" -m "Private text" -e AES
$ zwsp-tool extract -P path_to_file/text.txt -e AES
# Fuerza bruta de ZWSP
$ zwsp-tool bruteforce -P path_to_file/suspicious_text.txt
En audio, w pliku znajdują się ukryte obrazy spektrogram, różne dane dla każdego kanału lub metadane ID3 z zaskoczeniem. Z Wizualizator dźwiękowy, Śmiałość y SoX Możesz wizualizować, izolować kanały i konwertować je na spektrogram. Jeśli brzmi to jak modem lub bardzo „cyfrowy” szum, może to być… zakodowane dane i nie muzyki. W przypadku dźwięku/obrazów w ogóle, steghid zaszyfruj/ukryj i odzyskaj za pomocą hasła; stegsolve y stegonlina zastosuj szybkie filtry; stegseek automatyzuje siłowe łamanie haseł Steghide.
En obrazowośćOprócz oddzielnego sprawdzania kanałów R/G/B/A, klasyczną metodą jest LSB (najmniej znaczące bity), aby ukryć dowolne pliki bez zmiany ich wyglądu. Nie zapomnij EXIF (współrzędne, data, aparat) i że niektóre przypadki są tak proste, jak kolejny wklejony plik na koniec; dla tego, chodnik To cudowne lekarstwo, chociaż w PNG jest fałszywie pozytywne częsty.
Wskazówki dotyczące przekrojów: porównanie widoczna a rzeczywista długość z tekstu posłuchaj nagrań audio oddzielne kanały, przejrzyj to nietypowy rozmiar plików i uważaj na zbyt ładne dopasowania w dużych plikach binarnych. Zawsze sprawdzaj za pomocą dwóch narzędzi różne przed uznaniem odkrycia za ważne.
Poza ciągami znaków: pakowanie, zaciemnianie i entropia
Jeżeli nie zostaną wygenerowane żadne przydatne ciągi znaków, plik wykonywalny może zostać zapakowane lub zaciemnione. UPX jest łatwy do wykrycia i rozpakowania; można zastosować inne techniki XOR/szyfrowanie proste do danych i zasobów. W tym miejscu FLOSS pomaga w analizie „dynamicznych” ciągów znaków i Przekroje PE i ich entropia zapewnia silne sygnały: wysoka entropia zwykle wskazuje skompresowane lub zaszyfrowane daneNarzędzia takie jak PEStudio umożliwiają odczytanie wyników za jednym kliknięciem.
pamiętaj, że jest Interfejsy API do rozwiązywania importów w czasie wykonywania, więc nawet jeśli nie widzisz wyraźnych nazw funkcji, nie oznacza to, że plik binarny nie ma możliwości. Czas na korelację: to, co nie pojawia się w ciągach znaków, może pojawić się w dynamiczne ślady (dotykanie plików, modyfikowanie rejestru, sieć, podłączanie API).
Sugerowany przepływ pracy w celu wyodrębnienia przydatnego tekstu i sygnałów
Podejście, które rzadko zawodzi i pozwala uniknąć marnowania czasu: 1) Hash i ID z pliku (typ/architektura). 2) Ekstrakcja smyczki z Sysinternals i GNU; filtrowanie według długości i wyszukiwanie patrones. 3) Spróbuj z OPLĄT jeśli podejrzewasz ciągi znaków w czasie wykonywania. 4) Metadane za pomocą PEStudio i ExifTool, a następnie podpisz za pomocą PowerShell/properties. 5) certutil do dekodowania blobów Base64/hex i zrzucania ASN.1. 6) PowerShell ADS dla strumieni alternatywnych. 7) Jeśli plik binarny pozostawia artefakty (obrazy, dźwięk, dokumenty), zestaw narzędzi Stego (CyberChef, ZWSP-Tool, steghide, binwalk, Sonic Visualiser). 8) Sygnały zaciemnianie/entropia i jeśli to właściwe, przejść do analizy dynamicznej.
Oto kilka dodatkowych wskazówek dotyczących narzędzia certutil, które warto mieć pod ręką podczas pracy z ciągami znaków i osadzoną treścią: -URLcache do sprawdzania/czyszczenia pamięci podręcznej CRL/URL; -syncWithWU y -generateSSTFromWU podczas audytu zaufanych źródeł; i -weryfikujCTL dla zaufanych list (AuthRoot/Disallowed). Nie są to pierwsze kroki w celu wyodrębnienia tekstu, ale są kontekstualizować często, gdy pomiędzy ciągami znaków pojawiają się odniesienia do PKI.
Na koniec pamiętaj o tym Pobierz zawartość Posiada takie parametry jak: -Licznik odczytów aby dostosować wydajność i kombinacje takie jak -Czekać (log tailing), który w połączeniu z potokami i wyrażeniami regularnymi pozwala na skonfigurowanie potężne sita z niewielką ilością kodu.
Pracując w ten sposób, w ciągu kilku minut uzyskasz wyraźny obraz: co jest widoczne gołym okiem, co jest zaciemnione, jakie metadane pasują, a co nie. wskazówki, które można podjąć Warto kontynuować z większą liczbą narzędzi lub w piaskownicy. A co najważniejsze: nie ruszając ani jednej linijki wewnętrznego kodu.
