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 /schedulerpunktu końcowego. Ten punkt końcowy wyświetla wspaniałą stronę logowania do wykrywania wewnętrznych poświadczeń usługi ActiveDirectory. Punkt końcowy harmonogramu 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).

NMAP Wyodrębnianie danych domeny za pomocą Nmap NTLMRecon 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 Ław Ław Ław

Masz kredyty?

S4B domyślnie nie obsługuje MFA, więc możesz zalogować się np. pod /schedulerpunktem końcowym. Tutaj masz możliwość podjęcia łatwego wyliczenia użytkowników za pomocą funkcji check namesspotkania. 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 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 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).

Deweloper-AAD 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. Deweloper-AAD 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.

Deweloper-AAD 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.comktóry jest nadal dość godny zaufania, ponieważ onmicrosoft.come-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. Deweloper-AAD Fałszowanie linku

By doing this, it is possible to craft messages, which open a malicious URL despite showing a company owned URL. Deweloper-AAD 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.

Deweloper-AAD 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: Deweloper-AAD 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.

Deweloper-AAD 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: