CMD, czyli Wiersz poleceń, to aplikacja dostępna w systemach Windows. Służy do interakcji z systemem operacyjnym za pomocą poleceń tekstowych.
Wiersz poleceń w systemie Windows oferuje szeroką gamę poleceń, które umożliwiają użytkownikom zarządzanie systemem, diagnozowanie problemów i wykonywanie różnych zadań.
Komendy CMD wpisuje się w Wierszu poleceń, który jest narzędziem dostępnym w systemach operacyjnych Microsoft Windows.
Aby otworzyć wiersz poleceń, można posłużyć się menu „Start”, wpisując „cmd” w polu wyszukiwania i wybierając odpowiednią aplikację.
Możesz skorzystać z ciekawego skrótu klawiszowego, który kryje się pod klawiszem - Windows + R, następnie wystarczy wpisać - cmd i potwierdzić swoje zamiary naciskając - OK.
Jeśli chcesz równie szybko otworzyć interpreter poleceń, naciśnij menu Start i wystukaj na swojej klawiaturze - Wiersz polecenia
Trzecim sposobem na uruchomienie wiersz poleceń jest folder znajdujący się w Menu start.
Aby skutecznie korzystać z komend CMD, warto znać i zrozumieć ich składnię.
Polecenia w CMD mają określoną składnię. Zazwyczaj składają się z nazwy polecenia, po której mogą wystąpić różne opcje (przełączniki) zaczynające się od znaku „/”.
Korzystanie z pomocy: Jeśli nie jesteś pewien, jak działa dane polecenie, możesz skorzystać z wbudowanej pomocy.
Wystarczy wpisać nazwę polecenia, a następnie /help, np. dir /help.
Wystarczy dopisać po poleceniu /?.
Wpisz w konsoli help, aby wyświetlić dostępne polecenia.
Warto zapoznać się z tymi najpopularniejszymi komendami, które mogą wpłynąć na szybkość poruszania się w środowisku systemowym.
Dodatkowo mogą umożliwić dostęp do wielu ciekawych danych wewnątrz systemu.
Lista możliwych, wykonywalnych poleceń w systemach Windows wynosi ogólnie 280.
Zmiana katalogów: Za pomocą polecenia cd można przechodzić między katalogami.
Wskazuje dokładną lokalizację, czyli podajemy literę dysku, folder, plik, np.
Wskazujemy lokalizację względem miejsca, w którym się znajdujemy.
Przykładowo, będąc w folderze c:\Users\Public, chcąc wejść do folderu Moj_folder nie musimy wpisywać cd c:\Users\Public\Moj_folder lecz wystarczy cd Moj_folder.
Można również przyspieszyć pisanie używająć dwóch kropek(..), czy znaku backslash (\).
cd .. copy plik.txt ..
cd /?
Przy obu rodzajach ścieżek (względnej i bezwzględnej) możemy je skracać przy pomocy znaków * (zastępuje ciąg znaków) oraz ? (zastępuje jeden znak).
Prowyższe opcje można umieścić w zmiennej środowiskowej DIRCMD.
COMPACT Wyświetla i pozwala na modyfikację listy plików.
CONVERT Konwertuje woluminy FAT na woluminy NTFS.
CMD pozwala na przekierowywanie wyjścia jednego polecenia do innego lub do pliku.
Na przykład, dir > lista.txt zapisze wynik polecenia dir do pliku „lista.txt”.
Z kolei | pozwala na przekazanie wyniku jednego polecenia jako wejścia do innego, np.
Jedna z moich ulubionych komend, którymi posługuje się w celu usunięcia szkodliwego oprogramowania, jeśli zawiodły mnie już wszystkie zaktualizowane programy antywirusowe.
Dokładnie, następna komenda, którą mam zamiar opisać wyświetla aktualnie uruchomione procesy/zadania w systemie Windows.
Otwórz wiersz poleceń, wpisz : Tasklist
Pozostało mi teraz wyszukać piku odpowiadającego za uruchomienie tego procesu i skuteczne jego zlikwidowanie.
Taskkill /im searchindexer.exe /f
Nazwa „searchindexer.exe” to nazwa procesu/zadania/obrazu, które przedstawia lista.
Wykonuje polecenie wymuszenia zakończenia procesu o identyfikatorze PID 2348.
Jak widać wiersz poleceń jest niedoceniany wśród wielu użytkowników.
Często jest to wspaniała, łatwa metoda do skutecznej weryfikacji problemów w systemie.
Przeprowadzenia zwykłej konserwacji czy zebrania istotnych danych.
Wiersz poleceń to świetna, darmowa alternatywa dla wielu programów.
Tryb MS-DOS
Kto z Was pamięta te czasy, jak wkuwał na pamięć i testował komendy MS-DOS (ang. Microsoft Disk Operating System)?
Jeśli je pamiętacie, to na pewno zaliczacie się do grona doświadczonych osób w IT
Najbardziej używanymi i zapamiętywanymi wtedy komendami były „dir” „copy”, „mkdir”, czy słynny „format”.
Oczywiście było ich o wiele więcej i z pewnością zdobyta wtedy wiedza jest przydatna aż do dziś.
Wszystkie wersje systemu Microsoft Windows posiadają interfejs wiersza poleceń (CLI) podobny do systemu MS-DOS.
Interfejs użytkownika i ikona były zgodne z natywnym interfejsem MS-DOS aż do Windows 2000.
Consumer Windows (do 3.11, Win9x, WinME) działał jako graficzny interfejs użytkownika (GUI) działający na szczycie MS-DOS.
Z Windows 95, 98 i ME zintegrowano część MS-DOS, traktując oba systemy operacyjne jako kompletny pakiet.
Niestety, wszystko przemija i tak MS-DOS umarł wraz z pojawieniem się na rynku systemu operacyjnego Windows XP.
Od tego momentu nowsze systemy operacyjne nie działały w DOS ale posiadały coś co do dzisiaj nazywa się wierszem poleceń i ma podobny wygląd do DOS-u.
Współczesny system Windows posiada dwie powłoki wiersza poleceń: powłokę poleceń (cmd) i PowerShell.
CMD Powłoka poleceń (w skrócie CMD) była pierwszą powłoką wbudowaną w system Windows, która automatyzowała rutynowe zadania, takie jak zarządzanie kontami użytkowników lub nocne tworzenie kopii zapasowych, za pomocą plików wsadowych (.bat).
Zaś PowerShell został zaprojektowany w celu rozszerzenia możliwości powłoki poleceń o uruchamianie poleceń PowerShell zwanych cmdletami.
Polecenia cmdlet są podobne do poleceń systemu Windows, ale zapewniają bardziej rozszerzalny język skryptowy.
W PowerShell można uruchamiać zarówno polecenia Windows, jak i polecenia cmdlet PowerShell, ale w powłoce poleceń można uruchamiać tylko polecenia systemu Windows, a nie polecenia cmdlet PowerShell.
Integracja CMD z PowerShell umożliwia efektywne administrowanie systemem Windows, który wykorzystuje moc obu narzędzi.
CMD to tradycyjny interfejs, który doskonale sprawdza się w szybkich operacjach, takich jak zarządzanie plikami czy proste zadania administracyjne.
PowerShell, z jego zaawansowanymi funkcjami skryptowymi i wsparciem dla .NET, pozwala na wykonanie bardziej złożonych zadań i automatyzację procesów.
Wspólnie CMD i PowerShell umożliwiają administratorom wybór najlepszego narzędzia dla danego zadania, zwiększając efektywność pracy.
Na przykład, w PowerShell można wywołać polecenia CMD.
Pozwala to na łatwe integrowanie skryptów CMD w bardziej kompleksowych skryptach PowerShell.
Ponadto, PowerShell oferuje bardziej intuicyjną składnię i rozszerzoną funkcjonalność.
Wiele ataków na MS Windows wiąże się z użyciem wiersza linii poleceń CMD oraz PowerShell.
W szczególności Powershell jest trudny do wykrycia, ponieważ potrafi wykonywać polecenia z pamięci i nie zapisuje niczego na dysku!
Oczywiście, aby zapobiec złośliwemu atakowi PowerShell, można ograniczyć typy poleceń, które mogą być wykonywane w sesjach PowerShell.
Poza tym konieczne jest również wyłączenie PowerShell 2.0 Engine (brak funkcji logowania) i włączenie audytu tworzenia procesów w linii poleceń (w tym PowerShell) + logowanie modułu PowerShell i logowanie bloków skryptów.
Jednym z pierwszych kroków analizy podejrzanego systemu jest przegląd uruchomionych procesów.
Tasklist to podstawowe narzędzie wiersza poleceń, które wyświetla listę aktualnie działających procesów na komputerze (lokalnym lub zdalnym).
Polecenie to wyświetla wszystkie procesy w formie tabeli, z informacjami dodatkowymi (/v - tryb verbose).
Tasklist niestety nie pokazuje bezpośrednio ścieżki pliku EXE, ale jest na to sposób: użyj Windows Management Instrumentation Command-line (WMIC) lub PowerShell.
Drugim filarem szybkiej oceny stanu systemu jest sprawdzenie połączeń sieciowych.
netstat -bn - pokazuje aktywne połączenia wraz z nazwami uruchomionych plików binarnych (-b) i adresami numerycznie (-n).
Netstat przydaje się również do wykrywania procesów nasłuchujących na nietypowych portach.
Wskazówka: netstat daje migawkę tego, co w danej chwili jest połączone.
Atakujący mogą być przebiegli - ich malware może otwierać połączenia nieregularnie.
Kolejnym kluczowym źródłem informacji dla analityka są logi zdarzeń Windows.
Windows rejestruje ogrom zdarzeń systemowych, z których najważniejsze dla bezpieczeństwa znajdują się w dzienniku Security.
W warunkach ograniczonych (np. brak dostępu do przeglądarki zdarzeń GUI), z pomocą przychodzi polecenie wevtutil.
Jest to tekstowe narzędzie do obsługi logów, pozwalające m.in. odpytwać dzienniki o konkretne wpisy.
To oznacza, że ktoś próbował (i nadal próbuje) zgadywać hasło Administratora - klasyczna próba brute-force na RDP.
Możesz nim eksportować logi do pliku EVTX czy czyścić logi.
Większość zaawansowanych malware po udanej infekcji próbuje zyskać persystencję, czyli uruchamiać się ponownie po restarcie systemu.
Klasycznym miejscem, gdzie to realizują, jest autostart systemu Windows.
Zacznijmy od rejestru.
By sprawdzić zawartość klucza Run, użyjemy polecenia reg (edytor rejestru w trybie tekstowym) z opcją query.
To wypisze wszystkie wartości (wpisy autostartu) w tym kluczu.
Warto również zajrzeć do wspomnianych folderów startup.
Można to zrobić np. oraz analogicznie dla %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup (startup aktualnego użytkownika).
Podsumowując: Analiza autostartu pozwala wykryć próby persystencji.
Każdy znaleziony nietypowy wpis Run w rejestrze lub plik w folderze Startup powinien być zweryfikowany.
Harmonogram zadań Windows (Task Scheduler) to kolejny ulubiony mechanizm atakujących do utrzymania się w systemie.
Umożliwia uruchamianie dowolnych programów o zaplanowanych porach lub przy określonych zdarzeniach (np. logowanie).
Do analizy zadań wykorzystamy polecenie schtasks.
Samo schtasks /query wyświetla listę wszystkich zadań zarejestrowanych w harmonogramie.
Przykład z praktyki: Analizując maszynę po incydencie, zauważasz w wynikach schtasks /query /v zadanie o nazwie „GoogleUpdateTask„.
Taki task należy natychmiast wyłączyć lub usunąć.
Pierwsza komenda zakończy ew. uruchomione zadanie, druga je skasuje (parametr /F wymusza operację bez potwierdzenia).
Na co zwracać uwagę przeglądając zadania? Oprócz nazwy i akcji (co jest uruchamiane), istotny jest też Autor/Author zadania oraz Trigger (kiedy uruchamia).
Wskazówka: Alternatywą do schtasks jest PowerShell: Get-ScheduledTask | Where-Object State -ne 'Disabled' pokaże aktywne zadania.
Można je też filtrować po Author lub akcjach.
Generalnie jednak schtasks /query /v wylistuje wszystko - tylko uważnie przejrzyj listę lub przekieruj do pliku i przeszukaj pod kątem podejrzanych ciągów.
Dopełnieniem powyższych kroków jest przeszukanie systemu plików pod kątem plików, które mogą być komponentami ataku.
Często malware kopiuje się w nietypowe miejsca - wspomniany już katalog Temp (zarówno systemowy, jak i użytkownika) to popularny wybór, podobnie jak %ProgramData% czy ukryte foldery w profilach użytkowników.
Najprostszym narzędziem będzie tutaj standardowe polecenie dir lub PowerShell z Get-ChildItem.
Parametr /OD sortuje listing po dacie (Oldest first, czyli od najstarszych - jeśli chcemy od najnowszych, możemy potem przewinąć do końca lub użyć /O-D dla odwrotnego sortowania).
Parametr /S przeszukuje też podfoldery.
Patrząc na wyniki, koncentrujemy się na ostatnio zmodyfikowanych plikach.
Inną metodą jest użycie PowerShell do znalezienia np.
To wylistuje pliki EXE większe niż 100 KB w katalogu Temp bieżącego użytkownika.
System operacyjny Windows umożliwia skonfigurowanie audytu dotyczącego monitorowania komend wprowadzanych do wiersza linii poleceń.
Możemy to zrobić na dwa sposoby: 1) Konfigurując natywny audyt poprzez polisę GPO 2) Wdrażając darmowy moduł SYSMON.
Załóżmy, że próbujesz chronić wszystkie komputery w zarządzanej domenie.
Najlepiej do tego stworzyć dedykowaną politykę GPO i przypiąć ja w strukturze Active Directory do OU, w którym chcemy monitorować komendy na określonych komputerach.
Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Configuration > Detailed Tracking > Audit Process Creation
Computer Configuration > Administrative Templates > System > Audit Process Creation > Include command line in process creation events
Należy również włączyć poniższe ustawienie, aby zapewnić, że ustawienia zaawansowanej konfiguracji zasad inspekcji nie zostaną zastąpione przez podstawowe ustawienia zasad inspekcji.
Aby można było zobaczyć, co jest wpisywane w CMD musimy przejść do logów Security w dzienniku zdarzeń i wyszukać zdarzenia o identyfikatorze 4688.
Powyższą opcją możemy także monitorować komendy wpisywane z PowerShell, lecz nie zobaczymy w niej wszystkich wywołań.
W celu włączenia audytowania rejestrowania modułów należy skonfigurować poniższe ustawienie:
Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell > Turn on Module Logging
W celu włączenia audytowania rejestrowania bloków skryptów należy skonfigurować poniższe ustawienie:
Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell > Turn on PowerShell Script Block Logging
Poniżej prezentujemy wynik w logach po wykonaniu poniższej komendy:
Invoke-Command -ScriptBlock { dism.exe /Online /Get-Featureinfo /FeatureName:’MicrosoftWindowsPowerShellv2′ }
W logach operacyjnych PowerShell (ID 4104 oraz ID 4103).
Wpisz w konsoli help, aby wyświetlić dostępne polecenia.
Możesz również wejść do pomocy każdego polecenia. Wystarczy dopisać po poleceniu /?.
Na marginesie: graficzne narzędzia takie jak Autoruns (Sysinternals) są złotym standardem do przeglądu autostartu, ale zakładamy, że chcemy poradzić sobie czystym Windows.

tags: #wyswietl #aktualnie #uruchomione #zadania #cmd
About the author