Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Jak Microsoft Teams + Quick Assist umożliwiły atakującym dostęp do firmowego komputera? Relacja z obsługi incydentu od naszego czytelnika.
Opiszę tu prawdziwy incydent, jaki miałem ostatnio okazję analizować. Zdarzył się w firmie poza Polską, gdzie standardowym językiem komunikacji był angielski, więc anglojęzyczni atakujący łatwiej podszyli się pod support…
Być może pamiętacie ostrzeżenia dotyczące wykorzystania Quick Assist – Microsoftowego rozwiązania do zdalnej pomocy – coś jak TeamViewer czy AnyDesk, tylko domyślnie (niestety) wbudowanego w system.
Jest ono od dłuższego czasu wykorzystywane w atakach na “pomoc techniczną”, gdzie ktoś podszywa się pod helpdesk – skala jest na tyle duża, że na podstronie Microsoftu poświęconej rozwiązaniu jest od razu link do formularza zgłaszania nadużyć…
Podobnie jak w innych aplikacjach do pomocy zdalnej, atakujący po prostu skłania użytkownika do udostępnienia mu kontroli nad komputerem przez przekazanie współdzielonego sekretu, lub – jak w Quick Assist – wklejenia hasła od atakującego.

Aby całkowicie usunąć komponent z systemu, należy zweryfikować zarówno starszą instalację w C:\Windows\System32, jak i nowszą wersję dystrybuowaną przez Microsoft Store, którą użytkownik może samodzielnie zainstalować (aplikacja występuje pod nazwą zlokalizowaną – np. „Szybka pomoc” w polskiej wersji językowej). Dodatkowo konieczne jest uniemożliwienie ponownej instalacji przez użytkownika.
W omawianej firmie administratorzy próbowali takie odinstalowanie przeprowadzić globalnie, ale jak ze wszystkimi automatami w IT – zwykle znajdą się komputery, na których coś nie zadziała zgodnie z planem…
Jaka w tym ataku rola zapowiedzianego w tytule Teamsa?
Otóż platforma ta umożliwia domyślnie otrzymywanie wiadomości i połączeń głosowych także spoza firmy – od innych użytkowników Teams.
I teraz – jeśli jest to zwykła wiadomość na czacie, to Teams przynajmniej wyświetli ostrzeżenie podobne do tego:

Jednak już w przypadku zaproszenia do czata grupowego, tego ostrzeżenia nie będzie (a przynajmniej do niedawna nie było).
Co jeszcze ważniejsze dla tego incydentu – ostrzeżenia zabraknie też w przypadku połączenia głosowego z zewnątrz…
Oczywiście Microsoft daje w ustawieniach pewne opcje – takie jak zablokowanie komunikacji zewnętrznej w ogóle lub ograniczenie jej tylko do wskazanych domen nadawców, ale nie jest to już tylko kwestia techniczna, ale i biznesowa – tu już nie będzie ostrzeżenia a tylko wybór pomiędzy allow a deny.
Nie każda firma może sobie na to pozwolić (najpewniej spowoduje to opóźnienia w komunikacji i duży narzut konfiguracyjny na IT, które potrzebne domeny musi sukcesywnie dodawać…)
Mamy już dwa główne elementy układanki, przejdźmy więc do samego incydentu:
W godzinach porannych pewien użytkownik otrzymał połączenie głosowe na Teams – źródłem jest konto itadmin@internalitincident[.]onmicrosoft[.]com (co też ładnie pokazuje, jak (nie)działają procedury antyfraudowe w MS przy tworzeniu nazw tenantów 😉)
Na skutek bardzo pechowego zbiegu okoliczności:
- Ten użytkownik faktycznie zgłaszał akurat IT problem z siecią i spodziewał się kontaktu.
- W firmie od niedawna pracował nowy specjalista helpdesk, którego użytkownik jeszcze nie znał (ale wiedział o jego zatrudnieniu)
Użytkownik połączenie odebrał (głównie z przyczyny 1), a atakujący celowo przedstawiali się bardzo niewyraźnie, przez co użytkownik “podstawił” sobie w głowie, że to na pewno ten nowy specjalista helpdesk (nazwijmy go „Adam X”).
Mamy tu też siłę autosugestii, bo użytkownik był post factum przekonany, że atakujący przedstawił się jako Adam X, choć nie była to raczej prawda.
Teraz wchodzi drugi element: atakujący poprosili użytkownika o uruchomienie Quick Assist i wprowadzenie podanego przez nich kodu uwierzytelniającego.
Tu mamy kolejny pechowy zbieg okoliczności: akurat na tym komputerze odinstalowanie aplikacji się wcześniej nie udało – a do tego użytkownicy byli przyzwyczajeni do dostępu zdalnego z udziałem innych, podobnych rozwiązań…
Po udostępnieniu atakującym dostępu zdalnego, użytkownik zobaczył jedynie klasyczne „czarne okienka z tekstem” – co również nie wywołało wielkiego zdziwienia, bo IT często odpala skrypty podczas zdalnego supportu.
Zanim firma odkryła incydent dzięki wewnętrznemu Threat Huntingowi, minęło około godziny.
Do czasu kontaktu z lokalnym IT Security użytkownik był przekonany, że wszystko było ok – ot, normalne połączenia ze wsparciem technicznym…
Po odizolowaniu komputera od sieci, rozpoczęła się analiza logów z EDR-a, który oczywiście incydentu jako takiego nie wykrył, ale chociaż można było sprawdzić, co też atakujący kombinowali…

Na szczęście scenariusz ataku okazał się w miarę prosty:
- Pobranie i uruchomienie zaciemnionego skryptu z domeny hXXps://khanvas[.]com/styles[.]css (mimo zgłoszenia do CERT PL, wciąż jest dostępny – dla amatorów analizy na dzień publikacji tego artykułu)
Aktualnie, po wrzuceniu na VirusTotal, jest już wykrywany np. przez Defendera jako Trojan:Script/Wacatac.H!ml (jednak wcześniej zarówno domena jak i plik miały minimalne detekcje – 10/62 po 10 dniach, tylko część mainstreamowa) - Pobranie z LDAP listy komputerów (i użytkowników)
- “Skanowanie Powershellem” – najpierw ICMP (ping) na wszystkie komputery z domeny
- Następnie próby połączeń do udziału „
Admin$” (C:\Windows) przez protokoły SMB i WebDAV na wszystkich komputerach, które odpowiedziały na ICMP.
I tu już atakującym się znudziło…
Ponieważ użytkownik nie miał ani uprawnień administratora lokalnego na swoim komputerze, ani na żadnym innym – Lateral Movement się nie udał, więc zabrali swoje zabawki i się rozłączyli (usuwając nawet kilka elementów, które miały pozwolić na utrzymanie przyszłej kontroli nad komputerem (persistence).
Z braku czasu na bardziej rozbudowane analizy, komputer zostało oczywiście wyzerowany i przeinstalowany od zera.
Co robić, jak żyć?
- Quick Assist to zło i warto je usuwać/blokować wszystkimi sposobami
- Użytkownicy nie powinni mieć uprawnień administratora lokalnego (a już nigdy: na głównym koncie na którym pracują)
- Ograniczenie zewnętrznych połączeń w Teams jest warte rozważenia – ale to decyzja biznesowa
- Blokada używania Powershella może utrudnić atakującym życie – ale ma sens głównie wtedy, gdy próby użycia są wykrywane na bieżąco.
- Edukacja (Security Awareness) jest ważna, ale raczej nie ograniczy ryzyka konkretnego ataku do 0 – każdego da się oszukać, jeśli trafi się w dogodny moment i okoliczności, co dobitnie pokazał przypadek Troya Hunta
- EDR nie zablokuje magicznie każdego ataku 😉
- Warto rozważyć postawienie w sieci prostych honeypotów (np. darmowy OpenCanary) i dodanie ich w domenie oraz DNS pod zachęcającą nazwą – metoda: “ktokolwiek dotknie: idzie alert” jest możliwa do wdrożenia nawet w sporej organizacji
- Da się zrobić w organizacji baseline użycia Powershella (na bazie logów z EDR) i wyłapywać nieznane przypadki – wymaga to trochę tuningu, ale wbrew pozorom zadziała – nawet w sporej organizacji – dając finalnie nieznaczną liczbę alarmów false–positive. Wystarczy zacząć od wszystkich wykonań Powershella i stopniowo dodawać do wyjątków te spodziewane.
Czy będzie to rozwiązanie idealnie szczelne? Oczywiście że nie – tuning wymaga pewnych kompromisów – ale działa. To samo dotyczy wielu LOLbinsów…
~ Stanisław Jesiak aka Zerat

@Stanisław Jesiak aka Zerat
Zamiast usuwać Quick Assist, należałoby raczej skupić się na czynniku, który w praktyce najczęściej powoduje incydenty bezpieczeństwa — czyli na błędach ludzkich, a nie na samym narzędziu.
Warto też pamiętać, że podobny poziom dostępu (w tym zdalne sterowanie ekranem) można udostępnić również przez Microsoft Teams, także użytkownikom spoza organizacji. Usunięcie jednego mechanizmu nie rozwiązuje więc problemu, jeśli nadal istnieją inne kanały o analogicznych możliwościach.
Artykuły tego typu można tworzyć w nieskończoność, ale często sprowadzają się one do leczenia objawów zamiast przyczyn — trochę jak próba „leczenia raka” przez odcięcie jedzenia, bo przecież bez niego nie przeżyje. Problem pozostaje jednak dużo bardziej złożony.
Bez sensu jest ten artykuł btw…
Oczywiście że szkolenia są bardzo ważne, ale jakby miały 100% skuteczności, to żadne inne narzędzia nie byłyby potrzebne…
Jeśli ktoś nie ma przynajmniej tych kilku % trafień w testach phishingowych (mimo szkoleń), to znaczy że za łatwe testy robi ;P
Każdy kolejny element Sec ogranicza ryzyko, choć środki techniczne są często łatwiej mierzalne.
Z udostępnianiem w Teams jest jednak trochę inaczej – mamy tu dodatkowe kroki do wykonania – najpierw udostępnienie ekranu, potem przekazanie kontroli – do tego konto atakujących jest wtedy cały czas “na widoku” i użytkownik może się łatwej zorientować, że muszę coś jest nie tak.
Co ważniejsze jednak – Teamsy znają wszyscy, TeamViewera i AnyDeska praktycznie też – a o Quick Assist słyszeli nieliczni…
Dodajmy jeszcze do tego inny mechanizm dostępu – to nie użytkownik przekazuje hasło (może mieć trochę większe opory) tylko atakujący podają mu kod do wklejenia…
Na koniec – narzędzie jest już w systemie, gotowe do użycia od MS – nie trzeba wysyłać żadnych linków i zlecać userowo pobrania…
(zapraszam też do dyskusji na LinkedIn – na profilu Sekuraka lub u mnie – będzie dużo wygodniej i z info o odpowiedziach)
Teamsy nie pozwalają na kopiowanie zawartości schowka, co utrudnia szybkie wykonanie skryptu przez atakujących aby nie wzbudzac podejrzeń.
IMO artykuł jak najbardziej zasadny
Nożem można zabić – zakażmy je. Quick Assist to bardzo spoko narzędzie, nie potrzebuję aplikacji firm trzecich aby móc komuś pomóc. Absurdalna teza że Quick Assist to zło
W domu i zagrodzie – jeszcze ok (choć kontrola nad tym żadna – gdzie indziej można ograniczyć dostęp do wybranych kont np. albo tylko do uwierzytelniania opartego na lokalnych kontach z maszyny, nie na wyświetlanym kodzie)
W sieciach firmowych – to słabe rozwiązanie – brak kontroli i limitów – no i nie powinno być instalowane domyślnie w systemie (chociaż w wersji nie-Home)