06.02.2023 | 11:42

Wpis Gościnny

Kiedy nawet dobry EDR nie wystarcza – case study prawie udanego ataku z polskiej firmy

Bronimy dużej firmy. Kupujemy porządnego EDR-a. Instalujemy na stacjach. EDR pracuje, wysyła alerty, gdy znajdzie coś podejrzanego. Alerty analizujemy i reagujemy na te poważne. A włamywacz przychodzi ze swoimi narzędziami i robi swoje.

Poniższy artykuł zawiera opis śladów i narzędzi, zostawionych przez włamywaczy w jednej z polskich spółek. Włamywacze robili swoje, a alerty EDR-a zabrzmiały poważnie dopiero wtedy, gdy przystąpili do szyfrowania dysków. Administratorzy zdążyli wyrzucić włamywaczy, zanim doszło do tragedii. Napastnicy zostawili po sobie ciekawe narzędzia, w większość niewykrywane przez rozwiązania antywirusowe. Artykuł jest fragmentem raportu firmy Cyber Arms, która miała za zadanie ustalić, jak doszło do włamania i co w sieci robili sprawcy.

Początek roku dla zespołu IT w jednej z dużych polskich spółek rozpoczął się nieoczekiwaną pobudką w środku nocy. Wstępne ustalenia potwierdziły uzyskanie nieuprawnionego dostępu do części zasobów infrastruktury sieciowej. Uruchomiono proces obsługi incydentu, zrealizowany przez zespół Incident Response firmy Cyber Arms, który potwierdził włamanie, pozwolił ustalić skalę infekcji oraz jej orientacyjny przebieg. W ramach działań operacyjnych udało się pozyskać narzędzia, którymi posługiwali się włamywacze – ich analizę prezentujemy w dalszej części artykułu.

Kluczowe ustalenia

  • Najstarsze ślady niepożądanej aktywności wskazywały na ataki typu brute force napastników na różne usługi Windows wewnątrz infrastruktury firmy. Ataki prowadzone były po prawidłowym uwierzytelnieniu do usługi VPN. Nie ustalono, w jaki sposób doszło do nieuprawnionego dostępu do VPN-a – logi nie sięgały tak daleko.
  • Zabezpieczono 3 próbki złośliwego oprogramowania, które były wykorzystywane przez napastnika w toku prowadzonego włamania. Dalsza analiza wykazała małą popularność używanych próbek.
  • Celem atakującego było zdobycie kontroli nad kluczowymi elementami infrastruktury IT, zgromadzenie i pobranie wrażliwych zbiorów danych. W ostatnim kroku dane były usuwane z kopii bezpieczeństwa i szyfrowane w celu wyłudzenia okupu.
  • Większość tych celów została zrealizowana, łącznie z uzyskaniem dominacji w środowisku Active Directory.

Cały proces obsługi incydentu trwał ok. 48h. W tym czasie udało się powstrzymać przestępców, zabezpieczyć próbki oraz przeanalizować pozyskany materiał.

Analiza pozyskanych próbek

Napastnik preferował korzystanie z autorskich rozwiązań w toku włamania. Zgromadzone oprogramowanie zostało wytworzone w języku Delphi i posiadało bardzo proste mechanizmy zwodzenia analityka oraz minimalną ilość zaciemniania kodu. W każdej próbce odnaleziono frazy zawierające odstęp pomiędzy tekstem a dwukropkiem, dlatego nadano aktorowi nazwę roboczą Spacecolon.
Zabezpieczono łącznie 3 próbki złośliwego oprogramowania wykorzystywane w ataku oraz 8 powiązanych próbek wysłanych do serwisu VirusTotal. Analiza telemetrii wykazała niewielką aktywność napastnika w 2022 roku, w różnych częściach świata. Pliki zostały sklasyfikowane jako nieszkodliwe przez większość programów antywirusowych. Jedna z próbek pozostała niewykryta przez żaden program antywirusowy.

Narzędzie ap.exe

Pierwszym narzędziem wykorzystywanym przez napastnika po uzyskaniu nieuprawnionego dostępu była aplikacja o nazwie ap.exe. Pełni ona rolę pakietu narzędziowego z interfejsem użytkownika, który ułatwia napastnikowi dalsze poruszanie się po infrastrukturze sieciowej. Uruchomienie aplikacji poprzedzone jest fałszywym komunikatem o błędzie mającym zmylić użytkownika lub utrudnić analizę.

Sztuczny błąd aplikacji

Kliknięcie przycisku “OK” zamyka aplikację, ale dwukrotne kliknięcie w środek etykiety pozwala przejść do właściwej części programu.

Okno główne aplikacji ap.exe

Warto podkreślić, że część przycisków formularza nie posiada jeszcze kodu realizującego zaprojektowane czynności. Funkcje, które zostały już zaimplementowane, to:

  1. Pobranie i uruchomienie aplikacji PortablePlatform.exe, zawierającej instalator do przenośnych aplikacji dostępnych w serwisie PortableApps[.]com. Aplikacja jest pobierana z serwera kontrolowanego przez napastników w trakcie uruchomienia.
  2. Dodanie lokalnego użytkownika z prawami administracyjnymi do systemu operacyjnego.
  3. Usunięcie pliku konfiguracyjnego, zawierającego m.in. hasło aplikacji Cobian Backup 11.
  4. Zmiana układu klawiatury.
  5. Wyłączenie usługi Windows Defender.
  6. Zabicie procesów osk.exe i winupas.exe, które najprawdopodobniej stanowią złośliwe oprogramowanie typu ransomware z rodziny Vega/Bomber/Amnesia.
  7. Wyświetlenie podstawowych informacji dot. systemu operacyjnego.
  8. Prosty generator haseł.
  9. Otwarcie eksploratora systemu Windows w aktualnym katalogu roboczym.
  10. Wyłączenie lub ponowne uruchomienie komputera.
  11. Wysłanie zebranych wcześniej plików do serwera kontrolowanego przez przestępców.

Adresy URI, z których pobierane są składniki aplikacji zostały zaciemnione w kodzie pliku wykonywalnego. W tym celu zaimplementowano prosty algorytm do dekodowania wartości wtedy, kiedy są one potrzebne do działania aplikacji. Algorytm ten zawiera kombinacje operacji arytmetycznych i logicznych, a w ostatnim kroku uzależnia wartość aktualnie dekodowanego znaku ze znakiem poprzednim. Zaciemnione dane można odkodować przy użyciu następującego skryptu:

MUL = 0xd201
ADD = 0x7f6a
IV = 0x0639

def decode(encoded: str, iv = IV) -> str:
  decoded = b""
  for ch in bytearray.fromhex(encoded):
    xorVal = iv >> 8 & 0xff
    decoded += chr(ch ^ xorVal).encode("utf-8")
    iv += ch
    iv = (iv * MUL + ADD) & 0xffff
  return decoded.decode("utf-8")

Aplikacja posiada statycznie dowiązaną bibliotekę IPWorks, która realizuje operacje kompresji plików, szyfrowania oraz komunikacji przy użyciu protokołu HTTP. Nagłówek User-Agent z wartością Toolkit 100101 Firefox/41.0 został umieszczony w kodzie aplikacji na stałe:

Implementacja połączenia HTTP

Oprogramowanie nie instaluje w systemie żadnych pozostałych składników pozwalających na zdalny dostęp lub przetrwanie ponownego uruchomienia systemu operacyjnego. Co ciekawe, w kodzie można znaleźć komunikaty zapisane po turecku.

Komunikat o błędzie

Instalator installer.exe

Wielkość pliku przekracza 20 MB, co wskazuje na osadzenie w nim innych zasobów, potencjalnie plików wykonywalnych. Po uruchomieniu aplikacja zapisuje w katalogu roboczym plik cert.pfx, który jest magazynem danych kryptograficznych. W jego skład wchodzi certyfikat x.509, wskazujący na podmiot IBM oraz odpowiadający mu klucz prywatny RSA. Plik kontenera zaszyfrowany jest przy pomocy frazy dd1q2w3e.

Właściwości certyfikatu

Wspomniane dane kryptograficzne wykorzystywane są do weryfikacji łańcucha certyfikatów podczas nawiązywania szyfrowanego połączenia.

Implementacja kryptografii przy użyciu biblioteki IPWorks

Przycisk Check (Connectivity) umożliwia sprawdzenie połączenia z serwerami C2 przestępców, spełniając opisane powyżej warunki uwierzytelnienia. W momencie analizy 2 z 4 domen wskazywało na serwery, które akceptowały połączenia. Test połączenia ujawnił kolejny komunikat w języku tureckim.

Installer – okno główne

Główną funkcją aplikacji jest instalacja docelowego backdoora w systemie ofiary. Do tego służą przyciski u dołu aplikacji (Install i Check). W przypadku żądania instalacji wykonane zostaną następujące kroki:

  1. Utworzenie katalogu C:\ProgramData\MicrosoftSMM.
  2. Zapisanie do katalogu zaszyfrowanego pliku, który został zagnieżdżony w aplikacji instalatora (service).
  3. Plik zostanie odszyfrowany jako svcss.exe.
  4. Ostatnim krokiem jest uruchomienie pliku z parametrem /install, który dalej poprowadzi proces instalacji.
Implementacja deszyfrowania pliku service
Zawartość katalogu MicrosoftSMM

Instalacja realizowana jest przez wywołanie funkcji WinAPI ShellExecuteW, uruchamiającej proces svcss.exe z parametrem /install. Jeśli operacja zostanie wykonana na koncie uprzywilejowanym, do sytemu operacyjnego zostanie dodana usługa UpdateStoreServ oraz zadanie harmonogramu systemu Windows:

Szczegóły złośliwej usługi

Narzędzie zdalnej kontroli svcss.exe

Jest to kolejna próbka napisana w Delphi, jednak w odróżnieniu od poprzednich została skompilowana na architekturę x86_64. Poza IPworks korzysta również z biblioteki SecureBridge, która według dokumentacji implementuje wiele protokołów sieciowych, m.in. SSH.

Plik instaluje się jako usługa systemu Windows oraz dodaje zadanie harmonogramu, które co godzinę podejmuje próbę uruchomienia usługi (nawet jeśli ta jest już uruchomiona). Do instalacji służy parametr /install, analogicznie usługę można usunąć lub naprawić przy użyciu parametrów /uninstall lub /reinstall. Deinstalacja usługi pozostawia zadanie harmonogramu Windows, ponieważ twórcy zapomnieli zaimplementować mechanizm je usuwający.

Szczegóły zadania harmonogramu Windows

Złośliwa usługa uruchamia plik svcss.exe z parametrem /startedbyscm:00D244E7-B5119CE0-UpdateStorServ. Następnie nawiązywane jest połączenie z serwerem C2, wysłanie informacji o systemie i oczekiwanie na komendy do wykonania. Adresy serwerów C2 zostały umieszczone w pliku wykonywalnym.

Odniesienia do adresów C2

W badanej próbce osadzono również plik cert.pfx zawierający ten sam klucz i certyfikat, który umieszczony został w aplikacji instalatora. Dodatkowo identyczne certyfikaty zostały wykorzystane do konfiguracji usługi HTTP serwera C2. Oznacza to ujawnienie klucza prywatnego, służącego przestępcom do uwierzytelnienia swoich serwerów C2. Wykorzystując te informacje, można przeprowadzić prosty atak typu MITM na komunikację C2:

Przechwycona komunikacja C2

Treść odszyfrowanej komunikacji potwierdza wcześniejsze ustalenia dot. funkcjonalności badanej próbki. Po zgłoszeniu podstawowych informacji, wysyłany jest co 10 sekund komunikat podtrzymujący połączenie. Poniżej przedstawiono listę obsługiwanych przez złośliwe oprogramowanie komend:

  • DETAILS – zwraca informacje dot. systemu operacyjnego,
  • SETNOTE – umożliwia nadpisanie pliku svcss.ini,
  • TUNNEL – umożliwia tunelowanie połączeń poprzez zainfekowane urządzenie,
  • DISCONNECT – zrywa połączenie z C2,
  • DOWNEXEC – pobiera i uruchamia plik wykonywalny,
  • CMD – wykonuje komendę interpretera poleceń,
  • TASKSCHED – służy do manipulacji zadaniami harmonogramu.

Powyższe ustalenia umożliwiają stworzenie własnego serwera C2 i przekierowanie do niego ruchu aplikacji (sinkholing) oraz wysyłanie własnych poleceń. Za pomocą polecenia CMD z odpowiednią wartością można skłonić złośliwe oprogramowanie do samodzielnego odinstalowania.

Symulowany C2

Charakterystyka ruchu (regularność i wielkość), jak również niedbałość konfiguracji serwera C2 (ujawnienie klucza, niepodpisany certyfikat) stwarzają duże możliwości wykrywania infekcji.

Wykorzystywane programy narzędziowe

W trakcie ataku wykorzystywane były następujące ogólnodostępne aplikacje:

Napastnik umieszczał aplikacje w katalogu “Moja Muzyka”, należącym do jednego z administratorów. Ich wykorzystanie pozwoliło rozszerzyć infekcję na kolejne serwery oraz zgromadzić wrażliwe zbiory danych i wysłać je na zewnątrz. Znaleziono także ślady niszczenia systemu plików serwerów z wykorzystaniem programu Eraser. Przy użyciu Advanced Run i Windows Password Recovery zostały podjęte próby pozyskania poświadczeń przechowywanych w procesie lsass.exe.

IOC – informacje wskazujące na możliwy incydent

Poniżej załączamy listę IoC, dzięki której będziecie mogli zweryfikować, czy w waszej infrastrukturze także grasowali przestępcy.

Pliki wykonywalne

Suma kontrolna (SHA256)Nazwa plikuOpis
17a28a5ec98f65f1607f4d0fb572146b72e0f49470a4500d7c9bfe009bea1ebdap.exeHacktool
9b100c48551d497979bb267dbbe28da34b558e0fceeb1cfbe538c465ea455ef6ap.exeHacktool
be664cfef54b86929ec66db5f073c22ef9ef3bd5bf97861ef991232f32601e3aap.exeHacktool
74b55042515874a36ef7fc354a0f696b22dee282beb921ed2ad94e00302942a4ap.exeHacktool
b0ded7052389601329322e31329928f025e7223dc331d7e6147b8b42522722f3ap.exeHacktool
86070a98e77b5209370b71dce0160f05a3b18ab106fc9073529869053bfe41f1installer.exeInstalator usługi wersja GUI
fb1a6ccea5888ad4acd8465efe8555bce2883c24a3b92bab189f079b82a9df3ainstaller.exeInstalator usługi wersje bez GUI
f70127d70aa766e8e44646ba0ceec59327860dc55c421ecc09030f3f65e779d2svcss.exeBackdoor
7d73277b2edfdb77a8537cb184c8e0b9fc38fa71d1cb89b9e60d7cf8a9fbb6d8svcss.exeBackdoor
de2d792b534e6d40b54cd81261b130701199254478cc0cc0b34630632988dd53svcss.exeBackdoor
3c0be13be97c2b7ac3737997bb56f604a947b4d404456f644b2af4be4f9c17d2svcss.exeBackdoor

Połączenia sieciowe

AdresOpis
hxxps://b.688[.]org/list.txtPlik pobierany podczas uruchomienia próbki ap.exe
hxxp://b.688[.]org:8080/fileuploadAdres do wysyłania danych (ap.exe)
hxxps://b.688[.]org/mimi/a.php?task=uAdres do wysyłania poświadczeń (ap.exe)
hxxps://b.688[.]org/mimi/a.php?task=pAdres do wysyłania poświadczeń (ap.exe)
u.piii[.]netAdres C2 (installer.exe)
up.awiki[.]orgAdres C2 (installer.exe)
up.vctel[.]comAdres C2 (installer.exe)
u.cbu[.]netAdres C2 (installer.exe)
a.688[.]orgAdres serwera w infrastrukturze napastnika
b.688[.]orgAdres serwera w infrastrukturze napastnika
216.58.208.100Adres C2 – rozwiązywany z up.vctel[.]com
87.251.64.57Adres C2 – up.awiki[.]org
3.76.24.192Adres serwera, z którym komunikował się ap.exe

Reguły Yara

rule Windows_Hacktool_ap_exe {
   meta:
      description = "ap.exe - hacktool"
      author = "@srozb"
      creation_date = "2023-01-13"
      last_modified = "2023-01-20"
      revision = "4"
      os = "windows"
      hash = "17a28a5ec98f65f1607f4d0fb572146b72e0f49470a4500d7c9bfe009bea1ebd"
   strings:
      $ipw1 = "IPWorks Zip Self Extractor - www.nsoftware.com" fullword ascii
      $ipw2 = "IPWorks HTTP Component - www.nsoftware.com" fullword ascii
      $ipw3 = "/n software inc. - www.nsoftware.com" fullword wide
      $x1 = "/f /im advanced_port_scanner.exe" fullword wide
      $x2 = "5TLoginCredentialService.GetLoginCredentials[2]$ActRec0" fullword ascii
      $x3 = "5TLoginCredentialService.GetLoginCredentials[2]$ActRec" fullword ascii
      $x4 = "5TLoginCredentialService.GetLoginCredentials[2]$0$Intf" fullword ascii
      $x5 = "'TLoginCredentialService.TLoginFuncProxyPvE" fullword ascii
      $s1 = "taskhostex.exe" fullword ascii
      $s2 = "Taskmgr.exe - System Error" fullword ascii
      $s3 = "powershell -ExecutionPolicy Bypass -File \"" fullword wide
      $s4 = "Character :" fullword ascii
      $s5 = "Kill OSK" fullword ascii
      $s6 = "Ab1q2w3e!" fullword ascii
      $s7 = "Mimi Dump" fullword ascii
      $s8 = "Download :" fullword ascii
      $s9 = "Character :" fullword ascii
      $s10 = "Kill All (Default)" fullword ascii

   condition:
      uint16(0) == 0x5a4d and filesize < 32000KB and
      1 of ($x*) and 2 of ($ipw*) and 6 of ($s*)
}
rule Windows_Hacktool_installer_exe_GUI {
   meta:
      description = "installer.exe - hacktool/persistence GUI"
      author = "@srozb"
      creation_date = "2023-01-13"
      last_modified = "2023-01-20"
      revision = "4"
      os = "windows"
      hash = "86070a98e77b5209370b71dce0160f05a3b18ab106fc9073529869053bfe41f1"
   strings:
      $ipw1 = "IPWorks Zip Self Extractor - www.nsoftware.com" fullword ascii
      $ipw2 = "IPWorks HTTP Component - www.nsoftware.com" fullword ascii
      $ipw3 = "/n software inc. - www.nsoftware.com" fullword wide   
      $x1 = "ELoginCredentialError" fullword ascii
      $x2 = "TLoginCredentialService.TLoginFunc" fullword ascii
      $x3 = "TLoginCredentialService.TLoginEvent" fullword ascii
      $x4 = "TLoginCredentialService.TLoginCredentialEvent" fullword ascii
      $s1 = "txtfortiip" fullword ascii
      $s2 = "Forti IP :" fullword ascii
      $s3 = "Status :" fullword ascii
      $s4 = "NOT CHECKED" fullword ascii
      $s5 = "Connectivity" fullword ascii
   condition:
      uint16(0) == 0x5a4d and filesize < 32000KB and
      1 of ($x*) and 2 of ($ipw*) and 4 of ($s*)
}
rule Windows_Hacktool_installer_exe {
   meta:
      description = "installer.exe - hacktool/persistence no GUI"
      author = "@srozb"
      creation_date = "2023-01-13"
      last_modified = "2023-01-20"
      revision = "4"
      os = "windows"
      hash = "fb1a6ccea5888ad4acd8465efe8555bce2883c24a3b92bab189f079b82a9df3a"
   strings:
      $ipw1 = "IPWorks Zip Self Extractor - www.nsoftware.com" fullword ascii
      $ipw2 = "IPWorks HTTP Component - www.nsoftware.com" fullword ascii
      $ipw3 = "/n software inc. - www.nsoftware.com" fullword wide   
      $s1 = "\\MicrosoftSMM\\" fullword wide
      $s2 = "svcss.exe" fullword wide
      $s3 = "/install" fullword wide
      $s4 = "installed succesfully" fullword wide
      $s5 = "error raised, with message :" fullword wide
      $s6 = "log.txt" fullword wide
      $s7 = "UpdateStorServ" fullword wide
   condition:
      uint16(0) == 0x5a4d and filesize < 32000KB and
      1 of ($ipw*) and 4 of ($s*)
}
rule Windows_Malware_svcss_exe {
   meta:
      description = "svcss.exe/storagesvc.exe - backdoor"
      author = "@srozb"
      creation_date = "2023-01-13"
      last_modified = "2023-01-20"
      revision = "4"
      os = "windows"
      hash = "f70127d70aa766e8e44646ba0ceec59327860dc55c421ecc09030f3f65e779d2"   
   strings:
      $ipw1 = "IPWorks Zip Self Extractor - www.nsoftware.com" fullword ascii
      $ipw2 = "IPWorks HTTP Component - www.nsoftware.com" fullword ascii
      $ipw3 = "/n software inc. - www.nsoftware.com" fullword wide
      $x1 = "ELoginCredentialError" fullword ascii
      $x2 = "TLoginCredentialService.TLoginFunc" fullword ascii
      $x3 = "TLoginCredentialService.TLoginEvent" fullword ascii
      $x4 = "TLoginCredentialService.TLoginCredentialEvent" fullword ascii
      $x5 = "lpServiceName" fullword ascii
      $s1 = "Server storage monitoring service" fullword ascii
      $s2 = "/startedbyscm:" fullword wide
      $s3 = "Service execution failed : \"%s\"" fullword wide
      $s4 = "Service continuing failed : \"%s\"" fullword wide
   condition:
      uint16(0) == 0x5a4d and filesize < 32000KB and
      1 of ($x*) and 2 of ($ipw*) and 2 of ($s*)
}

Powrót

Komentarze

  • 2023.02.06 12:28 pdr

    Ekstra artykuł, wincyj takich technicznych poprosimy ! :)

    Odpowiedz
  • 2023.02.06 12:38 lowult

    „logi nie sięgały tak daleko”

    CZEMU???

    Odpowiedz
    • 2023.02.06 16:54 Vpn

      Passy dla VPN zostały zarąbane zewnętrznemu konsultantowi zapewnie.

      Odpowiedz
    • 2023.02.06 17:02 andżej

      Rentencja logów nie pozwalała mejbi?

      Odpowiedz
  • 2023.02.06 14:13 Jan

    A to wstrętne turki.

    Odpowiedz
  • 2023.02.06 23:13 Kain

    Tytuł trochę przesadzony bo dobry EDR spokojnie by sobie poradził. Sam brak detekcji sygnaturowej nie dyskwalifikuje gdyż próba wykorzystania funkcjonalności tego oprogramowania od razu powinna podnieść alert, gdyż programy typu EDR działają na zasadzie „thresholdu” – dopóki customowe, nieznane oprogramowanie nie znacznie robić podejrzanych czynności dopóty EDR będzie się mu wyłącznie przyglądać.

    Odpowiedz
    • 2023.02.10 21:17 asdsad

      Pewnie to zależy od konfiguracji. Mogę sobie wyobrazić, że coś było wyłączone lub źle skonfigurowane, bo „za często były fałszywe alarmy”.

      Odpowiedz
  • 2023.02.07 03:22 Zkis

    Po co bylo tworzone konto lokalnego admina ? Skoro potem bylo napisane ze pliki byly przechowywane w folderze moja nuzyka jednego z adminow ?
    No i vpn bez 2fa ? :-(

    Odpowiedz
    • 2023.02.12 12:35 M.

      Końcowy użytkownik ledwo ogarnia wpisanie hasła do VPN, 2fa to w większości fikcja.

      Odpowiedz
  • 2023.02.10 21:18 asdsad

    Bardzo fajna analiza! Chętnie bym jeszcze takich poczytał.

    Ciekawe, że soft był pisany w Delphi. Nie sądziłem, że to jeszcze popularny język. A może właśnie z powodu niepopularności ktoś go użył?

    Odpowiedz
    • 2023.02.12 15:41 Damian

      Mój ulubiony notatnik (EditPadPro) został napisany w Delphi. Więc nie zgodzę się z tym, że jest to martwy język

      Odpowiedz
  • 2023.02.11 19:33 Obserwator

    Włamanie do VPNa?

    Włamali się do Wireguarda, IPSeca czy OpenVPNa?

    Ciekawe, jak się włamywaczom udało wygenerować poprawne klucze uwierzytelniające do VPNa…

    Pozdro

    Odpowiedz
  • 2023.02.12 12:41 中国人

    Fyi, z tureckim może być celowa zmyłka. Odstępy między słowem a dwukropkiem/kropką to cecha charakterystyczna dla ludzi posługujących się chińskim. Oni po prostu tego nie widzą.

    Odpowiedz
  • 2023.03.09 01:34 C. Bolek

    „Jedna z próbek pozostała niewykryta przez żaden program antywirusowy.” – raczej powinno być:
    Jedna z próbek pozostała niewykryta przez wszystkie programy antywirusowe.

    Odpowiedz

Zostaw odpowiedź

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Kiedy nawet dobry EDR nie wystarcza – case study prawie udanego ataku z polskiej firmy

Komentarze