Jak w prosty sposób oszukać ochronę antywirusową

04 września 2014, 19:55 | Aktualności | komentarzy 29
: zin o bezpieczeństwie - pobierz w pdf/epub/mobi.

Nie od wczoraj wiadomo, że programy antywirusowe chronią wyłącznie przeciwko najpopularniejszym zagrożeniom rozprzestrzenianym na masową skalę. Ostatnio opublikowane badania dotyczące omijania dynamicznej analizy antywirusowej po raz kolejny to potwierdziły.

Celem modułów dynamicznej analizy w czasie rzeczywistym jest wykrywanie dotychczas nieznanego, złośliwego oprogramowania. Emeric Nasi w swoich badaniach przetestował parę technik zaciemniania złośliwego kodu, który przestał być wykrywany przez większość oprogramowania antywirusowego.

Poniżej prezentujemy kilka najciekawszych sztuczek, które skutecznie oszukały wszystkie spośród 55 testowanych programów antywirusowych:

  • użycie rzadko używanych funkcji systemowych (np. VirtualAllocExNuma),
  • sprawdzenie nazwy pliku z jaką program został wywołany,
  • stworzenie obiektu mutex, a następnie potomnego procesu testującego istnienie wcześniej ustawionego muteksu,
  • przydzielenie „dużej” ilości pamięci podczas startu programu (np. 100 MB),
  • wykonanie kilku milionów bezsensownych operacji procesora podczas startu programu.

Warto się zastanowić co przyczynia się do tego, że analiza dynamiczna zawodzi przy tak prostych metodach ukrywania złośliwego kodu przed skanerami AV.

Techniki przedstawione w dokumencie Emerica Nasi wykorzystują fakt uruchamiania złośliwego kodu w środowisku, które jest „emulowane” przez antywirusy. Kod uruchamiany jest w piaskowanicach lub innych środowiskach, które nie odwzorowują idealnie prawdziwego systemu. Gdy złośliwe fragmenty kodu nie zostaną wykonane, wtedy sygnatury nie będą miały szansy wykrycia podejrzanego ciągu instrukcji. Wszystko co trzeba zrobić, to tak posterować wykonaniem programu, aby złośliwy kod wykonał się w systemie ofiary, a nie wykonał się w „środowisku” AV.

Tak dochodzimy do pierwszej, niedawno jeszcze 100% metody omijania AV. Niektóre funkcje systemowe, jak chociażby VirtualAllocExNuma, są na tyle specyficzne i rzadko używane, że nie do końca poprawnie zostały odtworzone przez oprogramowanie antywirusowe, co daje świetną metodę do sterowania wykonaniem złośliwego kodu:

Podobny efekt uzyskamy również dzięki sprawdzaniu pierwszego argumentu wykonywalnego programu – w normalnych warunkach powinniśmy otrzymać po prostu nazwę złośliwego pliku. Gdy jednak program wykonywany jest przez AV, pierwszy argument (argv[0]) nie zwróci nazwy złośliwego pliku (np. „test.exe„), a nazwę wątku programu AV, który obecnie analizuje malware (np. „antivuris-scanner.exe„):

Kolejny przykład dotyczy obsługi muteksów używanych w programowaniu współbieżnym/równoległym do wykluczania współdzielonych zasobów lub fragmentów kodu. Aby obejść ochronę AV wystarczy stworzyć mutex w systemie, następnie powołać do życia proces potomny, a następnie sprawdzić czy niedawno ustawiony mutex jest widoczny. Klasycznie warunek ten powinien oczywiście zachodzić, jednak jak widzimy po wynikach Emerica Nasi, w środowisku symulowanym przez AV już tak nie jest:

Jest jeszcze inny duży problem, związany ze skutecznością oprogramowania AV, które w odróżnieniu od powyższych, raczej nie zostanie szybko rozwiązany.

Program antywirusowy, który posiadałby szereg skomplikowanych funkcji gwarantujących najwyższy stopień bezpieczeństwo, nie mógłby być programem użytecznym. Nikt nie chce używać narzędzi ochrony, które przez wnikliwą analizę mocno spowolnią działanie systemu.

Powyższy fakt również znalazł swoje odbicie w badaniach. Okazuje się, że tak proste czynności, jak chociażby alokacja 100 MB pamięci lub wykonanie kilka milionów kroków pętli przy starcie programu wystarczy, aby omijać moduły dynamicznej analizy współczesnych systemów antywirusowych. Bezpieczeństwo kosztem użyteczności:

 

 

IT Triangle

Dokument „Bypass Antivirus Dynamic Analysis – Limitations of the AV model and how to exploit them” zawiera jeszcze kilka innych technik, które z dużą skutecznością pomagają zwodzić oprogramowanie antywirusowe, np.:

  • odwołanie się do nieistniejącego adresu URL,
  • sprawdzenie wielkości zbioru roboczego procesu (ang. „working set”), czyli zbioru stron pamięci, które są aktualnie wykorzystywane przez proces,
  • oszukanie emulacji funkcji sleep() przez środowisko AV,

Mimo tego, że za pewien czas wiele spośród powyższych technik przestanie być skuteczna, to bez problemu będzie można znaleźć analogiczne odpowiedniki, które pozwolą omijać wykrywanie złośliwego kodu. Oznacza to, że ochrona AV jeszcze długo nie będzie w stanie skutecznie odpierać złośliwe instrukcje napisane przez zmotywowanych agresorów.

Oczywiście nie oznacza to, że nie powinniśmy jej używać :-)

 

– Adrian “Vizzdoom” Michalczyk dla serwisu Sekurak.pl

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. czytelnik

    Bardzo ciekawy wpis, dzięki za wrzutke.

    Odnosząc się do artykułu, dla mnie AV to bardziej produkt marketingowy i służący temu by wyciągnąć kasę z mniej świadomych użytkowników, którzy wierzą w magiczną moc tego narzędzia i uważają, że instalując AV nie trzeba już myśleć.

    Ja osobiście nie używam od bardzo dawna żadnego AV i moja maszyna ma się dobrze. Chyba, że jakiś rządowy rootkit NSA mi się na kompie zadomowił :P ale poza tym czysto. Wystarczy tylko trochę ostrożności i myślenia podczas przeglądania stron, otwierania załączników i szlajania się po podejrzanych stronach.
    A dla bardziej ciekawskich, którzy nie mogą wytrzymać nie klikając we wszystko jak leci lepszym wyjściem moim zdaniem będzie uruchamienie przeglądarki w Sanboxsie lub surfowanie na virtualce, a jak coś złapiemy to wiadomo co z tym zrobić :).

    Dla zainteresowanych tematami jak AV działa, jak są tworzone sygnatury i na jakiej zasadzie malware jest identyfikowane po próbkach polecam rzucenie okiem:
    http://hooked-on-mnemonics.blogspot.com/2011/01/intro-to-creating-anti-virus-signatures.html

    https://security.stackexchange.com/questions/30362/how-do-antiviruses-scan-for-thousands-of-malware-signatures-in-a-short-time

    Odpowiedz
    • Czesław

      Strony , nawet te zaufane mogą być zainfekowane, JS załaduje CI wirusa i nawet się nie zorientujesz, że masz infekcję.

      Szczerze- nie obraź się, ale brak antywira na windows to głupota

      Odpowiedz
      • józek

        Nie zgodzę się. Antywirus jak antywirus, ale czy widziałeś w obecnych czasach virusa, który NIE ŁĄCZY się z internetem? W celu wykrycia virusa wystarczy ci bardzo dobry firewall (plus może jakieś zaawansowane narzędzie do skanowania zasobów/usług/procesów/połączeń/portów?), a do usuwania wystarczy combofixer (wersja dla win 8 już jest podobno). Poza tym, artykuł jest o podejrzanych „kodach”, ale pomija już kwestie istnienia przeróżnych technik pisania złośliwych aplikacji (których też jest całkiem sporawo), no i samych sposobach maskowania działalności procesów (dla aplikacji, które już zostały wdrożone do systemu). Fakt faktem to temat rzeka, a antywirus zapewnia ok. 40-70% bezpieczeństwa – bo skutecznie wycina już znane virusy (a 99% pro hackerów korzysta już ze znanych modułów, przykładowo po dziś dzień najczęściej stosowany jest zeus i jego wariacje, do botnetów mariposa (w tym hydr i bunkera) i jego wariacje, czy najlepiej moim zdaniem zrobionego confickera – virusy, których kody źródłowe pojawiły się w okolicach 2007-2009 roku, a wystarczą ich modyfikacje by antywirusy głupiały).

        Swoją drogą, I LOVE YOU!
        Szkoda, że teraz zdjęcia są tak dobrze chronione, prawda towarzysze? :)

        Odpowiedz
        • Czesław

          @jozek jaka zaporę używasz?

          Odpowiedz
          • józek

            Softwarowy: obecnie COMODO, testowałem kilka bezpłatnych (np. ZoneAlarm) i kilka płatnych (od Kasperskyego, AVG czy mniej znanego Vipre) i jak na razie tylko COMODO mnie nie zawodzi, wykrywa mi absolutnie wszystko co może wykryć firewall (no i po konfiguracji dobrze się uzupełnia z moją sprzętówką)

            Sprzętowy: produkt CISCO z modułem Wi-Fi, tyle tylko powiem, wiesz, bezpieczeństwo ;)

      • inny

        NoScript Twym przyjacielem.

        Ja też nie używam AV.

        Odpowiedz
      • Grzegorz

        Nie obraź się, ale z punktu widzenia bezpieczeństwa sieciowego używanie Windows to też głupota…

        Odpowiedz
        • Czesław

          Wywołany do tablicy opowiem jak ja korzystam z internetu.

          1. Komputer główny z Windows, służy do pracy (jego zadanie to ERP, hyperV, samba i kilka mniejszych funkcji). Na tym kompie przeglądarke używam wyłacznie do wchodzenia na stronę dwóch banków.

          2. Laptop używany terenie na Windows- przeglądarkę używam tylko wtedy gdy muszę i zawsze przez sandboxie. zadnego łażenia po stronach

          3. Do łażenia po stronach w domu używam osobnego PC z linux mint.

          4. jeszcze jeden laptop z linux kali służacy do testów pen., tam z przeglądarki korzystam wyłacznie łaczac się na serwisy lokalne typu nexpose, beef itd..

          Antywira używam na 2 kompach z Windows, konta standardowe, nie administracyjne. Na obu PC/Win mam działający w tle EMET i zapory. Uzywam fiorefoxa z no script.

          Kilka lat temu miałem raz włam na kompa i wtedy faktycznie nie pomógł antywir ani zapora. Malware złapałem dzięki dziurze w przeglądarce i kod został załadowany przez JS. Kiedy zorientowałem się, że padłem ofiarą malware zmieniałem hasła do 6 rano, przez całą noc.

          Od tego incydentu zaczeła sie moja przygoda z security, mimo, ze juz wtedy bylem w branzy IT 11 lat. W sumie jestem wdzięczny za to co sie stało, bo moglo skonczyc sie gorzej (np. ransomware).

          Dziekuje, pozdrawiam

          PS. Jeśli w moim planie jest jeszcze coś do poprawki chętnie posłucham :-))

          Odpowiedz
          • Afak

            Mój pomysł. Cały komputer/laptop lub jedynie system na oddzielnej partycji do obsługi bankowości online. W systemie w iptables zablokowane wszystkie połączenia wychodzące za wyjątkiem połączeń do serwerów banku.
            Niestety nie zadziała w przypadku płatności kartą online i zakupów w sklepach, ale jeżeli nie korzystamy a chcemy tylko mega bezpiecznie zarządzać kontem online, puszczać przelewy itp to dobry pomysł.

          • czesław

            Z osobnym systemem i firewallem dobry pomysł

      • Marek

        Nie używam AV. Wolę dobrego firewalla.

        Odpowiedz
  2. józek

    a jak już coś nas zdenerwuje, to ComboFixer załatwia sprawę na winie w 99,9% przypadków ;)

    Odpowiedz
    • Marcin

      ComboFixa to uzywasz jak juz masz system zainfekowany. Znajdzie, co bedzie potrafil, reszte pominie. A chodzi o to, zeby zapobiec infekcji a nie leczyc skutki.

      Odpowiedz
      • józek

        Zapobieganie infekcjom? Jest tylko jedna skuteczna metoda – myśleć, co się robi. Żaden antywirus nie zabezpieczy cię przed ściąganiem syfów z Zatoki (zwłaszcza, jak jest to całkiem nowy robak), żaden antywirus nie zabezpieczy cię przed exploitami, 0dayami czy złośliwym kodem JSa na stronach internetowych. Przykłady do uzupełnienia twojej niewiedzy podał Bart, jak skończysz czytać, to potem poszukaj czegoś samodzielnie:

        „Nie od dzisiaj wiadomo, że antywirusy nie radzą sobie ze współczesnymi zagrożeniami 1. http://goo.gl/2JTGzc 2. http://goo.gl/0mwKrM 3. http://goo.gl/WbLT6R

        Odpowiedz
        • hoo

          W przypadku ataku ( przypuszczam że jest to exploit ), który następuje po podłączeniu komputera z systemem postawionym od 0: zerowanie dysku twardego, format, wgranie systemu, instalacja AV; EMET, instalacja aktualizacji – poprawek. W tym momencie nie ma zainstalowanego Flasha i Javy. Jeszcze jakiś czas temu widoczne były obce nazwy komp. z których łączono i przeszukiwano system ( program TCPView je pokazywał ) teraz już nie. Stało się tak, wtedy gdy próbowałem rozwiązać ten problem na jednym z forum – Fixitpc.
          Problem powoduje też instalacja nowej wersji KIS 2015. Starą wersję trzeba odinstalować, aby zainstalować nową – po tym cały ruch wychodzący po https jest widoczny.
          FF z NoScript + AdBlock + Ghostery + Https Everywhere
          Linuks nie jest rozwiązaniem: Ubuntu da się wejść + wszystko to co wywodzi się z Ubuntu np: Zorin, Linuks Mint. Na Fedorze zauważyłem że podczas takiego przeszukiwania ( komp. podłączony po kablu do routera, nic nie robiłem) proces Phyton zużywał 90% procesora.
          Szukam samodzielnie, niestety nie znajduję odpowiedzi. Polegli na tym polscy experci od Kaspersky i Eset.
          Strony podane w komentarzach znam i niestety poza opisem nic z nich nie wynika. Pytałem o narzędzia i instrukcje jak z nich korzystać tak aby wyciągnąć sukinsyna z systemu ( bądź forum na którym zajmują się detekcją exploitów, a nie tylko wycinaniem linijek z zmodyfikowanym kodem znanym większości ).

          Odpowiedz
        • Marcin

          No ale przyklad przytoczyles combofixa a nie antywirusow co sobie ponoć nie radzą. Ja to widze troche inaczej ale przekonywać cie na sile nie mam zamiaru, nie chcesz to nie uzywaj. W chwili obecnej ponad nowego 90% malwaru jest wykrywana w ciagu pierwszych kilku godzin odkad zacznie sie rozprzestrzeniac, uwierz mi ze pracuje nad tym wielu mądrzejszych od ciebie ludzi, w wielu firmach AV z milionowymi budzetami i podobnym rzedem wielkosci uzytkowników. Upierasz sie przy twierdzeniu ze „wystarczy bardzo dobry firewall” co oczywiscie nie jest prawda, „layered security”. Poczytaj sobie o sposobach omijania FW i steganografii.
          COMODO bym odradzal, tworzyla go osoba odpowiedzialna za malware o nazwie TDL

          Odpowiedz
          • józek

            A widzisz, ja się specjalizuje w pisaniu oprogramowania obchodzącego antywirusy i znowu twoja bajka o „wykrywaniu w ciągu kilku godzin” powinna być w sumie automatycznie wywalona przez moderatora, żeby ludzi w błąd nie wprowadzać ;)

            „antywirusow co sobie ponoć nie radzą”
            – podałem linki, wystarczy.

            „uwierz mi ze pracuje nad tym wielu mądrzejszych od ciebie ludzi”
            – nie podważalny fakt, trudno się z nim spierać. Na szczęście są też znacznie mądrzejsi od ciebie.

            „z milionowymi budzetami”
            – Microsoft od lat udowadnia, że budżet nie ma znaczenia ;) A Kaspersky, którego oprogramowanie zostało „wyrzucone” z hukiem z pewnych testów AV, jasno określił jak obecnie wygląda rynek antywirusów i bezpieczeństwa, włącznie z jego jakością i skutecznością – google.pl

            „Upierasz sie przy twierdzeniu ze “wystarczy bardzo dobry firewall” co oczywiscie nie jest prawda”
            – udowodnij!

            „“layered security”. Poczytaj sobie o sposobach omijania FW i steganografii.”
            – hahaha, mądre frazy, lecz to że można obejść firewalla nijak się ma do stosunku jego skuteczności. Książek (nie publikacji, książek) o sposobach ukrywania aplikacji w środowiskach Windows oraz Linux, przy używaniu dziesiątków języków, oprogramowania, sposobów, luk, algorytmów, są tysiące. Jest to ciągle ewoluujący temat rzeka. Jednak, mój „temat” rzeka jest uniwersalny i ma bardzo szerokie zastosowanie, twoje tematy „omijania FW”, są jedynie celami targetowymi, nie można masowo atakować firewalli – ogromne koszta i zasoby – ale masowo atakować systemy z antywirusem to banał (najprostszy przykład, zaproponuj jakiemukolwiek administratorowi stworzenie serwerowni, bez firewalla, zobaczysz jego reakcję ;) Jeden mądrala wrzucił swój złośliwy kod do rejestru Windowsa i jego „trojanek” był nie wykrywalny przez kilka (naście?) miesięcy, chociaż technika ta jest znana od czasów Windowsa XP, jednak, używana na małą skalę (małe możliwości rozwoju i zarządzania zainstalowanym złośliwym kodem).

            „COMODO bym odradzal, tworzyla go osoba odpowiedzialna za malware o nazwie TDL”
            – no i? j00ru też zrobił kilka trojanów/malware/rootkitów/exploitów (oczywiście w celach testowych ;p), a jest uważany za jednego z najlepszych polskich specjalistów ;)

            Robiłeś jakieś własne oprogramowanie, czy tylko czytałeś na ten temat? Bo wątpię, że dogadasz się z programistą o dość „bogatym” doświadczeniu.

  3. józek

    btw.
    @sekurak
    tendencja 1 wpis na miesiąc to stanowczo za mało, aby zatrzymać czytelników ;)

    Odpowiedz
    • Może coś od października bardziej ruszy, zobaczymy. Robimy co można, choć ilość czasu ograniczona, a ilość pracy pod koniec roku zazwyczaj rośnie :/

      Odpowiedz
    • On

      Bullshit. Jakość != ilość

      Odpowiedz
  4. Powiem szczerze, że dużo bardziej przydałby się artykuł na temat tego, jak te mniej popularne zagrożenia zmniejszać :)

    Odpowiedz
  5. Damian Wąsik

    Super artykuł!

    Odpowiedz
  6. Hoo

    Może napiszecie jak prowadzić detekcję w tym kierunku. Jakimi narzędziami się posługiwać.
    Tak się składa że pomimo zainstalowanego KIS 2015 i EMET 5 do moich komputerów mają dostęp osoby trzecie – Windows Vista, 7, 8.1 i Fedora. Atak następuje poprzez podesłanie instalatora z oprogramowaniem, który instaluje się po restarcie komputera. Z komputera można wyciągnąć wszystkie dane ( zapisane w Exel czy Adobe ) lub z podpiętego pendrive. Tyle wiem.
    Można także zaatakować komputer nie podłączony do żadnej sieci poprzez kartę Wi-Fi. Możesz wyłączyć radiówkę, komputer nie będzie podłączony kablem do routera, a atakujący będzie miał pełen dostęp do danego sprzętu. W jaki sposób tego nie wiem. Przy instalacji lub przywracaniu systemu tego typu atak pozwala w pełni kontrolować komp.

    Odpowiedz
    • józek

      1. zamontuj firewalla
      2. zablokuj wszystko
      3. jak coś jest uparte – gratuluję, znalazłeś winowajcę!
      4. jeżeli odłączasz kabel od internetu/wi-fi i ktoś dalej kontroluje twój sprzęt to:
      a) wirus wykonuje wcześniej zaplanowane rozkazy
      b) twoja płyta główna ma Wi-Fi w standardzie i ktoś po prostu ukrył w Windowsie połączenie
      c) jesteś sprzężony fizycznie z innym komputerem
      (nie ma żadnych innych znanych ludzkości technik zarządzania sprzętem zdalnie, no jeszcze przez telefon można, ale tutaj to już wyższa astrofizyka)
      5. jeżeli znajdujesz wirusa i usuwasz, a mimo wszystko ktoś podsyła ci go na nowo to:
      a) masz zainstalowany moduł reinstalujący (taki bajer, który nie jest wirusem, a jedynie instalatorem wirusa – bardzo często nie wykrywalny dla nikogo, bo podpina się pod aplikacje)
      b) jesteś kretynem i dajesz komuś obcemu dostęp do komputera w jakiejkolwiek postaci
      c) nie masz firewalla
      6. jeżeli robisz formata i masz 100% pewności, że NIKT nie ma dostępu do twojego kompa, a mimo wszystko łapiesz tego samego wirusa to:
      a) ściągnij nowego pirackiego Windowsa
      b) zainstaluj kamery szpiegowskie, żeby mieć pewność (joke)
      c) ściągaj pliki z innych źródeł
      d) zmień ulubioną stronę z pornolami (nie będę nikomu tłumaczył, co potrafi JS inject)
      e) zastanów się, czy nikt nie ma dostępu do twojego routera (czy nie ma go na czarnej liście zrootowanych/zaexploiconych na maksa/0day itd. – bo często denerwuje się sąsiadów, a oni się mszczą)

      Jak MIMO wszystko znowu złapiesz tego samego wirusa, to zapewniam cię, że svchost.exe nie jest wirusem ;)

      I uwaga punkt 7:
      Musiałeś kogoś straszliwie wkurzyć. Marny twój los, Super Uber-Pro Menda nie zna litości!

      Nie ma na świecie tak inteligentnego wirusa, belive me, możesz być atakowany przez jednostkę osobową, w takim przypadku nie ma cię zbytnio co uratować oprócz firewalla sprzętowego.

      Chociaż… były projekty wirusów montujących się do odizolowanych sektorów dyskowych, czy do BIOSu płyty głównej, ale z tego co mi wiadomo nie wypłynęły z tego żadne konkrety i nie są w użyciu, a żeby złapać „choinkowy prezent” od NSA musiałbyś być na prawdę kimś super prze potężnym ;)

      Odpowiedz
    • vanitas

      @Hoo – to co opisujesz brzmi mało spójnie. Podaj więcej szczegółów. Laptop czy PCet? Masz włączony Bleutooth? Używasz klawiatury/myszy bezprzewodowej? Może masz wbudowany modem GSM? Jeśli nie – to komputer po wyłączeniu WiFi i Ethernetu (fizycznym – kabel z gniazdka – niektóre kompy mają bios z wbudowanym serwerem VNC albo podobnym) nie powinien się komunikować z otoczeniem. Twierdzisz że „atak” (cokolwiek to znaczy) jest możliwy nawet wtedy. Co znaczy „atak” – atakujący ma dostęp „online” (Próbowałeś w innej lokalizacji -u rodziców/dziadków/teściów?) – czy też „wie” co wpisywałeś (wchodzi w grę keyloger -pewnie sprzętowy – wyjmij wszystko z usb, użyj „świeżej” – dopiero co kuponej klawiatury i myszy). Jak to nie pomoże – pożycz/kup coś takiego i sprawdź, czy twój komputer nie emituje fal radiowych http://allegro.pl/miernik-czestotliwosci-ctss-dcs-50mhz-2-4ghz-i4654811301.html. Jak nie emituje nic – to zamów egzorcyste…

      Odpowiedz
  7. Bart
    Odpowiedz
  8. andy

    Ja uzywam tylko linuxa i 98% wirusow, trojanow i exploitow jest mi niestraszne. Pozostałe 1% to zdrowy rozsadek i nie klikanie w co popadnie. A ten 1% to jest akceptowalne ryzyko, zresztą dużo mniejsze niż Windows.

    Odpowiedz
  9. november

    Sztuczka z wykrywaniem swojej nazwy nie działa już

    Odpowiedz
  10. Kam

    No właśnie, przydałby się art, jak się chronić przed tymi mniej znanymi zagrożeniami.

    Odpowiedz

Odpowiedz