W dzisiejszym, krótkim artykule pokażemy ciekawą i przydatną sztuczkę dla zespołów RedTeam – stworzenie „niewidzialnego użytkownika Windows”, który może posłużyć jako backdoor. Jest to też jedna z technik używana przez niektóre malware.

W kampanii Active Directory Persistence pokazywaliśmy jak utworzyć backdoor’a w Active Directory i ukrywaliśmy użytkownika dla administratorów za pomocą specjalnie przydzielanych uprawnień ACE. Poniżej publikujemy wskazówkę, jak utworzyć lokalnego użytkownika na Windows, tak aby nie był on widoczny w listingu zwracanym przez komendę „net user” wykonywaną z wiersza linii poleceń.


Utworzenie konta użytkownika w systemie

Całość zajmuje, uwaga – aż jedną linijkę! Wystarczy w nazwie użytkownika na końcu dodać znak „$”. Uruchamiamy poniższą komendę:

net user backdoor$ P@ssw0rd /add

W wyniku której, w systemie Windows zostanie utworzony ukryty użytkownik „backdoor$”.

Problem z punktu audytowego tkwi w nazwie użytkownika. W logach Microsoft często loginy z „$” na końcu oznaczają logujące się konta komputerów do domeny Active Directory. Można łatwo takie konto pomylić z kontem komputera i pominąć w analizie.


Wyświetlanie lokalnych użytkowników na Windows

Istnieje kilka sposobów, aby wyświetlić nazwy użytkowników oraz ich szczegóły atrybutów w Windows. Poniżej prezentujemy kilka z nich oraz sprawdzamy, w których zobaczymy naszego ukrytego użytkownika, a w których nie.


1. Komenda “net.exe”

Jeśli chcielibyśmy wyświetlić wszystkich lokalnych użytkowników z użyciem komendy „net user” zobaczymy wszystkich innych użytkowników z wyjątkiem naszego użytkownika „backdoor”:

net user

W celu wyświetlenia informacji o użytkowniku backdoor$ musimy jawnie wskazać jego nazwę konta w wywołaniu poniższej komendy:

net user backdoor$


2. Komenda “wmic.exe”

Inną komendą, która także może posłużyć za wyświetlenie lokalnych użytkowników jest wmci.exe. Skład jej jest następujący:

WMIC USERACCOUNT LIST BRIEF

Tutaj widzimy, że nasz użytkownik jest widoczny na powyższym listingu.


3. Powershell

W Powershell listę użytkowników możemy uzyskać za pomocą poniższej komendy:

Get-WmiObject Win32_UserAccount -filter “LocalAccount=True” | Select-Object Name,FullName,Disabled

Tutaj też widzimy naszego ukrytego użytkownika.

Inną komendą listującą użytkowników w Powershell jest:

Get-LocalUser


4. Konsola MMC.exe

Możemy tez sprawdzić użytkowników lokalnych za pomocą konsoli graficznej. W tym celu należy uruchomić konsolę zarządzania komputerem (compmgmt.msc) i przejść do „Local Users and Groups” -> „Users”

Tutaj też widzimy naszego ukrytego użytkownika.


Artefakty utworzenia konta – Logi Microsoft

Warto monitorować operacje na użytkownikach (i nie tylko) w systemie operacyjnym. Microsoft domyślnie rejestruje zdarzenie utworzenia konta użytkownika w logu Security, a identyfikator zdarzenia to 4720. Jeśli w nazwie użytkownika występuję” $” może to być oznaka, że utworzył go atakujący lub złośliwe oprogramowanie (częsty przypadek).


Podsumowanie

Na podstawie powyższych testów okazało się, że komenda „net user” nie jest doskonałym sposobem do weryfikacji lokalnych kont użytkowników, ponieważ nie wyświetla ukrytych kont. Reszta sposobów, które zaprezentowaliśmy były w stanie wyświetlić kompletną listę kont. Sugerujemy zweryfikować w firmach Wasze systemy/aplikacje do audytu, które sprawdzają i listują takie konta, czy przypadkiem i one nie zawierają powyższej luki. Ominięcie w audycie stworzonego w taki sposób konta, może stanowić poważne ryzyko dla firmy.
Jeśli zaś okaże się, że w procesie audytu na Windows zostały wykryte konta z przyrostkiem „$” radzimy sprawdzić, dlaczego powstały i kto i kiedy je utworzył. Może być to jeden z artefaktów wystąpienia malware lub nietypowej aktywności atakującego.

Podziel się z innymi tym artykułem!