Filtr SmartScreen wbudowany w Windows 10 pomaga chronić komputer przed złośliwymi stronami, oraz już pobranym złośliwym oprogramowaniem. Pomaga, dopóki nie zostanie przez takie oprogramowanie wyłączony. W tym artykule pokażemy, jak to robi realny wirus.
SmartScreen jako całość jest usługą ostrzegającą przed złośliwymi stronami i plikami, głównie w przeglądarkach (Edge i wszystkich bazujących na Chromium, oraz Firefox i Internet Explorer). Sam program smartscreen.exe odpowiada za pobieranie z Internetu plików z aktualizacjami list złośliwych stron, oraz odpowiadanie na zapytania innych komponentów systemu (np. przeglądarek) o to, czy dany url jest złośliwy.
Dość nietypowy jest proces startu tej usługi - nie jest ona zarządzana przez mechanizm zarządzania usługami systemu Windows, ale przez Windows Defendera, jako jego komponent zewnętrzny, uruchamiany na żądanie.
Zobaczmy więc, jak SmartScreen jest trwale rozbrajany przez realnego wirusa. Podobnie jak w przypadku samego Windows Defendera, SmartScreen nie jest całkowicie wyłączany, ale raczej unieszkodliwiany - priorytetem jest bowiem to, aby braku jego działania nie zauważył użytkownik.
Jak to robi realny wirus?
Zaczyna się od polecenia, których celem jest zmiana własności programu smartscreen.exe w systemie plików z grupy TrustedInstaller na grupę Administratorzy - umożliwia to jakiekolwiek dalsze operacje na tym pliku:
takeown /f "%systemroot%\System32\smartscreen.exe" /a
Kolejne polecenie usuwa wszystkie uprawnienia jawne nadane temu plikowi (a konkretnie smartscreen.exe w Windows 10 ma 6 takich wpisów po instalacji systemu - bądź 5, jeżeli była już użyta operacja reset, która nie odtwarza zduplikowanego uprawnienia dla TrustedInstaller) i włącza dziedziczenie uprawnień po katalogu nadrzędnym:
icacls "%systemroot%\System32\smartscreen.exe" /reset
Następnie działający proces jest zabijany:
taskkill /im smartscreen.exe /f
A zanim Windows Defender się połapie, iż trzeba go uruchomić od nowa, do uprawnień jawnych dodawany jest wpis blokujący i w efekcie trwale uszkadzający dostęp do tego pliku:
icacls "%systemroot%\System32\smartscreen.exe" /inheritance:r /remove *S-1-5-32-544 *S-1-5-11 *S-1-5-32-545 *S-1-5-18
Aby zrozumieć to ostatnie polecenie, trzeba wiedzieć, w jaki sposób zbudowany jest tzw. SID, czyli unikalny identyfikator użytkownika lub grupy w systemie Windows, oraz jak działa zarządzanie uprawnieniami w systemie plików NTFS.
SID
W przypadku Linuxa, numerem użytkownika w systemie jest po prostu liczba, która pomiędzy różnymi systemami może się powtarzać dla całkiem różnych użytkowników - wręcz większość dystrybucji Linuxa rozpoczyna numerację nowo tworzonych użytkowników od 1000 lub 500, co nie tylko umożliwia, ale wręcz gwarantuje kolizje.
W przypadku Windows, każdy użytkownik ma swój globalnie unikalny SID, zbudowany m.in. z identyfikatora domeny lub komputera lokalnego, oraz unikalnego identyfikatora obiektu w ramach tej domeny. Przykładowy identyfikator SID użytkownika wygląda następująco:
S-1-5-21-636649630-2579541731-3789140388-1002
Podobnie z grupami niestandardowymi, tj. utworzonymi przez samego użytkownika (lub administratora).
Natomiast istnieje też cały szereg wbudowanych grup standardowych, których nazwy mogą się różnić w różnych językach, ale mają one stałe identyfikatory SID, m.in.:
- S-1-5-32-544 - Administratorzy
- S-1-5-32-545 - Użytkownicy
- S-1-5-11 - Użytkownicy uwierzytelnieni (grupy tej nie widać na liście grup systemowych; jest to grupa specjalna, do której należą użytkownicy aktualnie zalogowani na dany komputer)
- S-1-5-18 - Local System (tej grupy też nie widać na liście grup; jest to kolejna grupa specjalna, będąca jedną z grup najwyższego uprzywilejowania - tj. daje większe przywileje, niż przynależność do grupy Administratorzy)
- S-1-3-0 - Twórca-Właściciel (jest to specjalny typ uprawnień, dotyczący użytkownika lub grupy, który jest właścicielem danego pliku lub katalogu)
Uprawnienia w NTFS
Warto zapoznać się z tym świetnym artykułem nt. uprawnień w systemie plików NTFS. A póki co, warto zapamiętać dwie zasady:
- uprawnienia jawne (tj. dodane bezpośrednio do danego obiektu) są ważniejsze niż uprawnienia dziedziczone (np. po katalogu nadrzędnym)
- co do zasady, uprawnienia Odmowy są ważniejsze od uprawnień Zezwalania - a więc jeżeli dany użytkownik ma do jakiegoś pliku zarówno wpisy Zezwalania jak i Odmowy, co do zasady dostanie Odmowę
Następnie, w systemie Windows istnieją 3 główne narzędzia do linii poleceń, służące do operowania na uprawnieniach plików i katalogów:
- takeown.exe - program umożliwiający zmianę właściciela lub grupy podanego pliku lub katalogu
- cacls.exe - starszy program operujący na listach uprawnień (obecnie ma status Deprecated, ale przez cały czas używa się go w pewnych przypadkach, np. do sprawdzania uprawnień efektywnych)
- icacls.exe - nowszy program operujący na listach uprawnień
Wracając do ostatniego polecenia...
Po wytłumaczeniu powyższych podstaw, działanie tego polecenia jest już bardziej zrozumiałe. Chwilę wcześniej wirus zmienił właściciela tego pliku na grupę Administratorzy, oraz usunął wszystkie uprawnienia jawne, włączając dziedziczenie uprawnień po katalogu System32. W tym wywołaniu natomiast usuwane są wszystkie uprawnienia dziedziczone dla grup Administratorzy i Użytkownicy, oraz grup specjalnych Użytkownicy uwierzytelnieni i Local System. Lista uprawnień jest więc pusta.
W efekcie, każda kolejna próba uruchomienia takiego pliku lub choćby odczytu jego metadanych, już się nie powiedzie - niezależnie od tego, czy spróbuje to zrobić "zwykły" użytkownik, administrator przed lub po elewacji uprawnień, czy choćby sam Windows Defender - aż do ponownego resetu jego uprawnień.
Podsumowanie
Powyższy kod pochodzi z narzędzia Defeat-Defender, które (w nieco pozmienianej postaci) realny włamywacz pozostawił na komputerze realnemu klientowi serwisu Ransomware.pl.
Przedstawiony w tym artykule przykład, o ile jest krótki i prosty, o tyle warto mu się przyjrzeć bliżej - dokładnie tą samą techniką można bowiem trwale unieszkodliwić większość komercyjnych programów antywirusowych.
W kolejnych artykułach skupimy się na kolejnych funkcjonalnościach wirusów, jakie udało nam się pozyskać z uratowanych komputerów. A tymczasem kod źródłowy wszystkich omówionych dotychczas części znajdziesz pod tym adresem.
Intencją autorów ani wydawcy treści prezentowanych w magazynie PAYLOAD nie jest namawianie bądź zachęcanie do łamania prawa. jeżeli popełniłeś lub masz zamiar popełnić przestępstwo, bądź masz wątpliwości, czy Twoje działania nie będą łamać prawa, powinieneś skonsultować się z najbliższą jednostką Policji lub Prokuratury, a jeżeli są one związane z pieniędzmi, dla pewności również z Urzędem Skarbowym.
Nie zezwala się na użycie treści prezentowanych w magazynie PAYLOAD, ani produktów dostępnych w sklepie PAYLOAD, do celów popełniania przestępstw lub przestępstw skarbowych.