Jak Twój komunikator używany do komunikacji wewnętrznej może zagrozić Twojej firmie
W tym wpisie na blogu przedstawiono niektóre techniki dotyczące komunikatorów Microsoft Skype-for-Business (S4B) i Microsoft Teams dotyczące atakowania sieci firmowej.
Poniżej przedstawiono tylko niektóre dobrze znane techniki, które działają zbyt często, a firmy i pracownicy nie są tego świadomi. Wskaźnik sukcesu tego rodzaju phishingu/inżynierii społecznej jest bardzo wysoki.
Większość nazwanych punktów pochodzi z bloga mdsec lub mr.d0x .
dr
- S4B w wersji hostowanej samodzielnie umożliwia wyliczanie użytkowników na podstawie czasu i rozpylanie haseł w całej usłudze Active Directory, a nie tylko w przypadku użytkowników posiadających konto Skype
- S4B, jeśli włączona jest komunikacja zewnętrzna, umożliwia atakującym wysyłanie wiadomości bezpośrednio do pracowników
- Teams, nawet jeśli komunikacja zewnętrzna jest zabroniona, pozwala na wyliczanie użytkowników poprzez adresy e-mail,
- Zespoły, jeśli komunikacja zewnętrzna jest włączona, umożliwiają wyliczanie użytkowników, gromadzenie informacji o statusie i wysyłanie wiadomości bezpośrednio do pracowników przez osoby atakujące
- Jeśli używany jest adres aliasu, np
<<ADUSER>>.company.org
. Teams i S4B z radością rozwiążą użytkownika AD na imię i nazwisko
Wstęp
Kiedy mówimy o Skype-for-Business (S4B), należy zauważyć, że poprzednik Lync również prawdopodobnie jest dotknięty tymi samymi lukami.
S4B
Wykrywanie programu Skype dla firm (S4B)
S4B często można wykryć za pośrednictwem subdomeny o nazwie lyncdiscover.company.org. Jeśli domena istnieje, zwykle zwraca plik XML, który ujawnia, gdzie można znaleźć serwer S4B.
(curl https://lyncdiscover.##OnPrem##.com).rawcontent
HTTP/1.1 200 OK
X-MS-Server-Fqdn: SI0PLY01.de.##OnPrem##.com
[...]
{"_links":{"self":{"href":"https://si-pool1-webext.##OnPrem##.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=##OnPrem##.com"},"user":{"href":"https://si-pool1-webext.##OnPrem##.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=##OnPrem##.com"},"xframe":{"href":"https://si-pool1-webext.##OnPrem##.com/Autodiscover/XFrame/XFrame.html"}}}
Jeśli S4B jest hostowane przez firmę Microsoft, odpowiedź będzie wyglądać następująco:
(curl http://lyncdiscover.##OnMS##.com).rawcontent
HTTP/1.1 200 OK
[...]
{"_links":{"self":{"href":"https://webdirgb1.online.lync.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=##OnMS##.com"},"xframe":{"href":"https://webdir1E.online.lync.com/Autodiscover/AutodiscoverService.svc/root/xframe"},"redirect":{"href":"https://webdir1E.online.lync.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=##OnMS##.com"}}}
Jeśli skorzystasz z łącza do serwera S4B, możesz otrzymać odpowiedź 403 - Forbidden: Access is denied.
. Nadal możesz zidentyfikować S4B za pomocą favicon lub możesz po prostu spróbować dotrzeć do /scheduler
punktu końcowego. Ten punkt końcowy wyświetla wspaniałą stronę logowania do wykrywania wewnętrznych poświadczeń usługi ActiveDirectory. Punkt końcowy harmonogramu
Uwierzytelnianie NTLM
Jeśli instancja S4B jest lokalna, istnieje kilka punktów końcowych, które umożliwiają uwierzytelnianie NTLM.
Punkt końcowy umożliwiający uwierzytelnianie NTLM powoduje wyciek pewnych przydatnych informacji dla atakującego. Za pomocą narzędzia NTLMRecon lub starego, dobrego skryptu nmap możemy zebrać nazwę hosta i, co ważniejsze, wewnętrzną nazwę domeny (FQDN).
Wyodrębnianie danych domeny za pomocą Nmap Wyodrębnianie danych domeny za pomocą NTLMRecon
Ponadto punkty końcowe uwierzytelniania NTLM doskonale nadają się do rozpylania haseł, ponieważ szybkość uwierzytelniania NTLM jest dość duża i pozwala również na wielowątkowość.
Wyliczanie użytkowników
Jeśli już odkryliśmy składnię użytkownika przez OSINT, możemy po prostu zweryfikować konta tutaj. Dużym plusem S4B w środowisku hostowanym samodzielnie jest to, że wysyła zapytania do całego ActiveDirectory, a także zgłasza użytkowników, którzy zdecydowanie nie mają konta Skype, na przykład użytkownika krbtgt, którego można użyć do sprawdzenia, czy wszystko działa.
Przydatne są tutaj narzędzia takie jak lyncsmasher lub możemy po prostu użyć beknięcia do pomiaru czasu odpowiedzi. Prawidłowy użytkownik będzie miał znacznie krótszy czas odpowiedzi niż nieprawidłowy. Zwykle różnica powinna wynosić około 500 ms dla prawidłowego użytkownika i 5 s dla nieprawidłowego użytkownika. Jeśli konto jest wyłączone, S4B poinformuje o tym w wiadomości.
Należy pamiętać, że S4B zwykle przyjmuje albo adres e-mail, albo nazwę użytkownika z prefiksem domeny, npAD-Customer\MMustermann
Statystycznie prawdopodobne
Jeśli nie znamy składni użytkownika lub po prostu chcemy zebrać więcej użytkowników, możemy użyć specjalnych list, takich jak repozytorium https://github.com/insidetrust/statistically-likely-usernames lub zebrać własne listy, np. przykład z typowymi nazwiskami dla tego kraju z wikipedii. Aby utworzyć konta z większą różnorodnością, możemy również wypróbować proste narzędzia, takie jak namemash .
Pamiętaj, że jeśli nazwa użytkownika zawiera niestandardowy przedrostek (np. DE1) lub sufiks, ta technika może się nie powieść.
Rozpylanie hasła
Skype odpowie nam na różne sposoby.
- Jeśli użytkownik nie istnieje, odpowiedź będzie zwykle trwała około 5 sekund lub przynajmniej znacząco dłużej niż wtedy, gdy mamy prawidłowego użytkownika.
- Jeśli wprowadziliśmy nieprawidłowe hasło, Skype poinformuje nas o tym
- Jeśli konto jest wyłączone, Skype poinformuje nas o tym
- Jeśli mamy ważne dane uwierzytelniające, ale konto nie ma konta Skype, otrzymamy wiadomość
- Jeśli możemy zalogować się do Skype
Ław Ław Ław
Masz kredyty?
S4B domyślnie nie obsługuje MFA, więc możesz zalogować się np. pod /scheduler
punktem końcowym. Tutaj masz możliwość podjęcia łatwego wyliczenia użytkowników za pomocą funkcji check names
spotkania. Możesz tutaj przesłać kilka tysięcy nazw i zobaczyć, które nazwy zostaną rozwiązane. Punkt końcowy z radością przetłumaczy użytkownika AD na wiadomość e-mail, jeśli jest połączone konto.
Harmonogram Skype'a
I pamiętaj, aby sprawdzić https://aka.ms/mfasetup , ponieważ kontrolowany przez atakującego, dodany MFA jest całkiem przydatny.
Skype / Teams hostowane przez firmę Microsoft
Gdy Microsoft ogłosił w 2021 r., że zmienia domyślne ustawienie komunikacji zewnętrznej w usłudze Teams , cyberprzestępcy i RedTeams na całym świecie świętowali. Otworzyło to nowe drzwi dla wysoce skutecznych ataków phishingowych. Komunikacja zewnętrzna jest teraz domyślnie dozwolona i musi być aktywnie wyłączona.
Najemca testowy
Aby zaatakować takie ustawienie, potrzebujemy AAD z kontem Teams. Darmowa wersja Teams działa do wyliczania, ale prawdopodobnie nie będzie działać do komunikacji lub wyświetlania przynajmniej większej liczby ostrzeżeń.
Microsoft oferuje możliwość zarejestrowania deweloperskiego AAD. https://developer.microsoft.com/en-us/microsoft-365/dev-program
Deweloper-AAD Brzmi świetnie, prawda :)
Istnieją pewne ograniczenia, na przykład nie można udostępniać publicznie dostępnych plików. Jednak usługa Teams działa świetnie i możemy (nad)używać tego, aby zagrozić naszemu celowi.
Sidenote: TestAAD pozwala nam również wysyłać e-maile. Jednak wynik wychodzącego SMTP jest tak zły, że sam Microsoft nie akceptuje tych e-maili dla innych najemców. Ale oczywiście może istnieć wiele firm, które nadal akceptują tego rodzaju e-maile.
Wyciek informacji o użytkownikach
Czasami Skype zezwala na komunikację z użytkownikami zewnętrznymi, czyli z innym dzierżawcą. Korzystając z Teams, możliwe jest również wysyłanie zapytań przez Skype'a. Dlatego możemy sprawdzić od dzierżawcy z dostępem do Teams, czy komunikacja zewnętrzna jest dozwolona.
Jeśli komunikacja zewnętrzna jest dozwolona, możemy zebrać status użytkownika (dostępny, zajęty, dnd, poza biurem).
Wyliczanie użytkowników
Ale nawet jeśli nie, nadal możemy zweryfikować e-maile z firmą, ponieważ Teams zwróci inną wiadomość, jeśli użytkownik istnieje. Wyliczanie użytkowników
Możemy to również zrobić w sposób zautomatyzowany, albo przez proxy (Burp Suite) albo przez GoMapEnum .
Wyłudzanie informacji przez Skype lub Teams (skyshing / tishing)
Czasami Skype umożliwia komunikację z użytkownikami zewnętrznymi, czyli z innym dzierżawcą. Ponieważ Skype jest zwykle uważany za narzędzie do komunikacji wewnętrznej, jest to bardzo skuteczny wektor phishingu!
Dodatkową ciekawą funkcją jest to, że wiadomość zostanie wysłana jako e-mail, jeśli przez jakiś czas nie było reakcji. To pozwala nam wysłać wiadomość e-mail, technicznie pochodzącą z wewnętrznego serwera Skype do użytkownika. Ta poczta zwykle nie jest oflagowana jako zewnętrzna, a także nie trafia do kwarantanny.
Fałszowanie osoby kontaktowej
Dzięki naszemu programiście AAD możemy dodawać użytkowników według własnego uznania. Na przykład możemy dodać użytkownika o nazwie ithelpdesk@company.com jako pseudonim. Niestety, nie możemy tego po prostu poprawić, dodając ogólne logo firmy jako zdjęcie profilowe, ponieważ zdjęcie profilowe nie jest udostępniane wszystkim najemcom.
Pokaz tożsamości
Jeśli rozpoczniemy czat grupowy zamiast czatu jeden na jednego, pojawią się inne i bardziej niebezpieczne scenariusze z perspektywy obrońcy. Dość skutecznym atakiem jest jednoczesne zaatakowanie dwóch pracowników.
Jeśli spojrzymy na konto, jest to dość mylące i oszukuje ludzi, aby uwierzyli w tożsamość konta. Tylko po najechaniu kursorem na podgląd konta pojawi się pełny adres, it-helpdeskcompany@t0#####.onmicrosoft.com
który jest nadal dość godny zaufania, ponieważ onmicrosoft.com
e-maile są używane dla każdego AAD w tle. Ponadto, ponieważ nazwę AAD można wybrać podczas fazy konfiguracji, możliwe jest również wybranie czegoś takiego jak selfservice-company.onmicrosoft.com
.
Fałszowanie
S4B / Teams nie oferuje również ochrony przed fałszowaniem rzeczy w wiadomościach. Na przykład możliwe jest proste fałszowanie kodu HTML. Oznacza to, że tekst i link wskazują różne strony. Patrząc na żądania niezbędne do wysłania nowej wiadomości, dość oczywiste jest, jak zmienić tagi. Fałszowanie linku
By doing this, it is possible to craft messages, which open a malicious URL despite showing a company owned URL. Spoofed link in message
This is a very well-known attack vector for emails and most appliances detect this technique for emails.
Analysis of TOP DAX companies
To further provide some data about the possible risk, the DAX-Companies have been quickly analyzed. The DAX (Deutscher Aktienindex (German stock index) is the most important stock market index consisting of 40 major German companies:
- Adidas
- Airbus
- Allianz
- BASF
- Bayer
- Beiersdorf
- BMW
- Brenntag
- Continental
- Covestro
- Daimler Truck
- Deutsche Bank
- Deutsche Börse
- Deutsche Post
- Deutsche Telekom
- E.ON
- Fresenius
- Fresenius Medical Care
- Hannover Rück
- HeidelbergCement
- HelloFresh
- Henkel
- Infineon
- Linde
- Mercedes-Benz Group
- Merck
- MTU Aero Engines
- Münchener Rück
- Porsche SE
- Puma
- Qiagen
- RWE
- SAP
- Sartorius
- Siemens
- Siemens Healthineers
- Symrise
- Volkswagen
- Vonovia
- Zalando
These companies have been analyzed in regard to their S4B or Teams infrastructure. The following very simple methodic was used:
Find the main domain and some email addresses
To gather some email addresses and the main domain, common third party tools can be used. Just to name some: phonebook.cz, … Just take the TLD with the most hits, in most cases this is good.
Collect some emails for checks
Check for Lync / S4B
Enumerate some subdomains to identify Lync / S4B installations. The most common subdomains are:
- lyncdiscover.company.org
- meet.company.org
- dialin.company.org
- lync-fe.company.org
The following script was used:
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
$AllProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
$dax = Import-Csv D:\dax.csv # A list with the DAX domains
$dax | ForEach-Object {$u = "https://lyncdiscover.$($_.domain)"; $u; iwr -uri $u}
$dax | ForEach-Object {$u = "https://meet.$($_.domain)"; $u; iwr -uri $u}
$dax | ForEach-Object {$u = "https://dialin.$($_.domain)"; $u; iwr -uri $u}
$dax | ForEach-Object {$u = "https://lync-fe.$($_.domain)"; $u; iwr -uri $u}
Identify if external collaboration is enabled
By querying the endpoint https://teams.microsoft.com/api/mt/part/emea-03/beta/users/FIRST.LAST@company.com/externalsearchv3?includeTFLUsers=true
with the adjusted data from the email gathering, or by just using the search field in the webclient, we can detect what setup is in use. A typical result will look like this: Result of the external collaboration
Outcome
The results of the checks are a little bit suprising:
- 24 / 40 still have S4B in place, some hosted by Microsoft (online.lync.com).
- 08 / 40 have a self hosted and reachable S4B instance
- 35 / 40 use Teams or Teams <-> S4B interaction
- 10 / 40 allow external tenant communication
Detection & Mitigation
It is necessary to differ here. Password spraying can be detected by logging the amount of failed attempts. As the lockout policy will likely not trigger, it is important to monitor a bigger timeframe, like five failed attempts for one account within 24h. Tools like Microsofts Defender Identity can support here.
There is no protection against Teams email enumeration, besides to stop using Teams. However, a company email address should not be considered as secret, as there are several ways to gather and verify them.
To protect against tishing (phishing via Teams), the easiest solution is to block external communication and to use the allowlist feature provided by Microsoft.
These settings can be made in the Teams administration, similiarly for S4B.
Teams settings for external communication
And as usual, if there is no technical countermeassure, users should be trained to be aware of the risk. However, as we know, there will always be this one click, or this one password entered.
Conclusion
Microsoft’s S4B and Teams deliver an attacker a good attack surface. At a minimum, it is possible to enumerate email addresses and therefore validate users collected from OSINT. If there is a selfhosted S4B, it permits password spraying against the ActiveDirectory and will leak the FQDN of the server. If external tenant communication is allowed, an attacker could perform tishing, which is very effective, as most employees see Teams as an internal messenger and therefore trust it. The fact that, for example, the username or links can be spoofed increases the chances of an attacker to deliver an successfull attack.
To dziwne, że funkcje bezpieczeństwa, które były wdrażane w urządzeniach pocztowych przez dziesięciolecia, są po prostu ignorowane w komunikatorach. Co więcej, decyzja Microsoftu o domyślnym włączeniu komunikacji zewnętrznej jest wysoce wątpliwa z punktu widzenia bezpieczeństwa.
Spinki do mankietów
Prace i inspiracje innych:
- https://mrd0x.com/microsoft-teams-abuse/
- https://www.mdsec.co.uk/2017/04/penetration-testing-skype-for-business-exploiting-the-missing-lync/
- https://www.trustedsec.com/blog/attacking-self-hosted-skype-businessmicrosoft-lync-installations/
- https://github.com/nyxgeek/lyncsmash
- https://github.com/insidetrust/statistically-likely-usernames
- https://www.sprocketsecurity.com/resources/how-to-bypass-mfa-all-day
Brak komentarzy:
Prześlij komentarz
Proszę zostaw swój komentarz w celu dopowiedzenia tego czego ja nie wiedziałem lub wywołania ciekawej dyskusji. Wprowadziłem moderowanie komentarzy ze względu na dużą popularność bloga wśród różnych SEO botów :)