Ки­бер­прес­тупни­ки исполь­зуют собс­твен­ную инфраструк­туру, что­бы общать­ся с вре­донос­ным ПО, управлять заражен­ными устрой­ства­ми и воровать кон­фиден­циаль­ные дан­ные. Мож­но ли обна­ружить такие скры­тые угро­зы до того, как ущерб ста­нет необ­ратимым?

Эк­сперт по информа­цион­ной безопас­ности ком­пании «Инфо­сис­темы Джет» Евге­ний Богачев отве­чает: да, мож­но. В статье он объ­яснит, что такое вре­донос­ная инфраструк­тура и какие инс­тру­мен­ты и методы помога­ют находить ее ком­понен­ты.

 

Что относится к инфраструктуре злоумышленников?

Для кибера­так зло­умыш­ленни­ки исполь­зуют собс­твен­ную, час­то слож­ную инфраструк­туру. Сво­евре­мен­ное обна­руже­ние такой инфраструк­туры помога­ет понять, как устро­ены ата­ки, как ведут себя зло­умыш­ленни­ки и какие меры мож­но при­менить на ран­них эта­пах, что­бы миними­зиро­вать воз­можный ущерб для ком­пании.

Рас­смот­рим стан­дар­тную цепоч­ку Cyber Kill Chain, которая вклю­чает семь эта­пов:

  1. Reconnaissance (раз­ведка).
  2. Weaponization (воору­жение).
  3. Delivery (дос­тавка).
  4. Exploitation (зараже­ние).
  5. Installation (уста­нов­ка).
  6. Command and control (получе­ние кон­тро­ля).
  7. Actions on objective (выпол­нение дей­ствий).

На раз­ных эта­пах зло­умыш­ленни­ки исполь­зуют раз­ные ком­понен­ты сво­ей инфраструк­туры. Нап­ример, на эта­пе воору­жения готовят свои C2-сер­веры — они нуж­ны для свя­зи с вре­донос­ным ПО в сети жер­твы. Для это­го идут в ход в том чис­ле легитим­ные сер­висы вро­де Telegram, обыч­ные хос­тинги, а так­же так называ­емые пуленеп­робива­емые хос­тинги, которые игно­риру­ют жалобы на раз­мещен­ный кон­тент, в том чис­ле вре­донос­ный.

На эта­пе дос­тавки зло­умыш­ленни­ки закиды­вают вре­донос­ное ПО в инфраструк­туру жер­твы. Чаще все­го для это­го исполь­зуют фишин­говые пись­ма с заражен­ными вло­жени­ями или со ссыл­ками на внеш­ние ресур­сы, отку­да заг­ружа­ется вре­донос­ный код. Такими ресур­сами могут быть откры­тые дирек­тории, CDN или легитим­ные плат­формы вро­де GitHub.

На эта­пе получе­ния кон­тро­ля зло­умыш­ленни­ки активно исполь­зуют C2-сер­веры. Это могут быть спе­циали­зиро­ван­ные решения, раз­работан­ные под кон­крет­ную ата­ку и рас­простра­няемые на плат­ной осно­ве, или C2-фрей­мвор­ки с откры­тым исходным кодом. К пос­ледним отно­сят­ся такие популяр­ные фрей­мвор­ки, как Cobalt Strike, Mythic и Havoc.

 

Какие инструменты используют для обнаружения вредоносной инфраструктуры?

Что­бы най­ти ком­понен­ты вре­донос­ной инфраструк­туры, ИБ‑иссле­дова­тели исполь­зуют спе­циаль­ные поис­ковые сис­темы, ска­неры, ана­лиза­торы тра­фика и откры­тые базы дан­ных инди­като­ров ком­про­мета­ции (IoC).

 

Поисковые системы: Shodan, Censys, Fofa и другие

Эти сер­висы индекси­руют устрой­ства, под­клю­чен­ные к интерне­ту. У каж­дой сис­темы свой син­таксис зап­росов, поэто­му мож­но искать по раз­ным клю­чевым сло­вам. Одна­ко поис­ковики все рав­но могут выдавать раз­ные резуль­таты.

Нап­ример, в Shodan зап­рос product:nginx вер­нет око­ло 56 мил­лионов хос­тов. В Censys похожий зап­рос най­дет при­мер­но 21 мил­лион. Что­бы получить более пол­ную кар­тину, луч­ше исполь­зовать нес­коль­ко поис­ковых сис­тем одновре­мен­но.

Все эти сер­висы пре­дос­тавля­ют API, поэто­му их лег­ко встро­ить в свои плат­формы и обра­баты­вать дан­ные в при­выч­ной сре­де.

 

VirusTotal

Это сер­вис для ана­лиза фай­лов, IP-адре­сов, доменов и URL. Он под­держи­вает мно­жес­тво фун­кций и интегри­рует­ся со сто­рон­ними сис­темами обна­руже­ния и инс­тру­мен­тами для ана­лиза вре­донос­ности арте­фак­тов.

Что­бы давать информа­цию о вре­донос­ном арте­фак­те, VirusTotal исполь­зует датасе­ты. Они лежат в осно­ве плат­формы, струк­туриру­ют дан­ные об арте­фак­тах и показы­вают вза­имос­вязи меж­ду ними.

Что­бы обра­тить­ся к VirusTotal через гра­фичес­кий интерфейс, поль­зователь вво­дит зап­рос: URL, домен, хеш фай­ла (MD5, SHA-1 или SHA-256) или IP-адрес. Пос­ле это­го VirusTotal находит соот­ветс­тву­ющий арте­факт и свя­зан­ную с ним информа­цию в датасе­те и показы­вает эти дан­ные в виде отче­та по веб‑ана­лизу.

 

Urlscan.io

Этот сер­вис поз­воля­ет безопас­но иссле­довать потен­циаль­но вре­донос­ные веб‑ресур­сы. Он показы­вает информа­цию об HTTP-тран­закци­ях, содер­жимом стра­ницы, DOM-сним­ках, скрин­шотах, а так­же свя­зан­ных инди­като­рах: IP-адре­сах, доменах, хешах фай­лов. Это осо­бен­но полез­но, ког­да нуж­но изу­чить ресурс, не посещая его нап­рямую.

 

Открытые базы данных, например abuse.ch

В про­ект abuse.ch вхо­дят нес­коль­ко плат­форм, нап­ример:

  • MalwareBazaar — хра­нили­ще вре­донос­ных образцов;
  • SSL Blacklist — база вре­донос­ных TLS‑сер­тифика­тов;
  • URLhaus — сер­вис для сбо­ра и отсле­жива­ния вре­донос­ных URL‑адре­сов;
  • ThreatFox — откры­тая база инди­като­ров ком­про­мета­ции.
 

Как анализировать полученные данные и какие бывают паттерны поиска?

Эти инс­тру­мен­ты выда­ют мас­су дан­ных, но полез­но далеко не все. Что­бы вытащить нуж­ное, исполь­зуют раз­ные пат­терны поис­ка, нап­ример:

  • за­голо­вок HTTP;
  • эле­мен­ты HTML: title и body;
  • зна­чок сай­та (favicon);
  • сер­тифика­ты безопас­ности;
  • от­печаток TLS (TLS fingerprinting).

Это не все пат­терны, которые мож­но исполь­зовать, но они могут стать отправ­ной точ­кой для тво­его иссле­дова­ния.

Рас­смот­рим каж­дый из пат­тернов под­робнее.

 

HTTP-заголовки

Мож­но ана­лизи­ровать как стан­дар­тные, так и нес­тандар­тные заголов­ки: Server, ETag, Content-Type, Public и дру­гие. Нап­ример, C2-сер­веры Cobalt Strike час­то выда­ют себя таким набором заголов­ков:

HTTP/1.1 404 Not Found
Date: Day, DD Mmm YYYY HH:MM:SS GMT
Content-Type: text/plain
Content-Lenght: 0

Да­лее рас­смот­рим Mythic C2 — фрей­мворк с откры­тым исходным кодом. Если вни­матель­но изу­чить ре­пози­торий, мож­но най­ти файл config.json с парамет­рами для нас­трой­ки C2-сер­вера. На их осно­ве мож­но сфор­мировать поис­ковый зап­рос:

port: 80 Cache-Control: max-age=0, no-cache Connection: keep-alive Content-Type: application/javascript; charset=utf-8 Pragma: no-cache Server: NetDNA-cache/2.2; ASN: AS14061

В недав­нем кей­се мы наш­ли двад­цать хос­тов, под­ходящих под эти парамет­ры. Ана­лиз одно­го из них показал мно­жес­тво откры­тых пор­тов, вклю­чая нес­тандар­тные, и запущен­ный Mythic C2. VirusTotal тоже помеча­ет такие сер­веры как вре­донос­ные.

Элементы HTTP <title> и <body>

Title — это заголо­вок веб‑стра­ницы, отоб­ража­емый в бра­узе­ре, а body — ее HTML-содер­жимое. Поис­ковый зап­рос име­ет смысл стро­ить по клю­чевым сло­вам, которые ассо­циируют­ся с C2, вре­донос­ным ПО, зло­умыш­ленни­ком или дру­гой опас­ной сущ­ностью в тво­ем иссле­дова­нии. Нап­ример, поиск по клю­чевым сло­вам вро­де login, panel, c2, stealer или по наз­вани­ям вре­доно­сов помога­ет находить управля­ющие панели. Поис­ковый зап­рос в Shodan выг­лядит так:

http.title:"C2 Panel"

Что­бы най­ти откры­тые дирек­тории с вре­донос­ными фай­лами, в Censys мож­но исполь­зовать такой зап­рос (на при­мере Sliver C2):

(services.http.response.html_tags: "Index of /" or "Directory Listing for /") and services.http.response.body: "sliver")
 

Favicon

Favicon — зна­чок сай­та, который показы­вает бра­узер во вклад­ке. Для поис­ка мож­но исполь­зовать хеш изоб­ражения, нап­ример MurmurHash3, который под­держи­вают Shodan и Censys. Сге­нери­ровать хеш мож­но сле­дующим скрип­том:

import mmh3
import requests
import codecs
response = requests.get('https://domain.com/favicon.ico')
favicon = codecs.encode(response.content,"base64")
print(mmh3.hash(favicon))

Ана­лиз фавико­нок так­же полезен при поис­ке фишин­говых ресур­сов. Взяв икон­ку легитим­ного ресур­са, нап­ример Netflix, мож­но най­ти домены, исполь­зующие этот зна­чок, но ведущие на под­дель­ные стра­ницы.

 

Сертификаты

Еще один полез­ный пат­терн — поиск по сер­тифика­там, точ­нее, по их атри­бутам, таким как:

  • се­рий­ный номер сер­тифика­та;
  • по­ля issuer и subject, где зло­умыш­ленни­ки иног­да ука­зыва­ют наз­вание сво­его вре­донос­ного ПО или фрей­мвор­ка C2.

При­меры зап­росов для поис­ка в Shodan сер­веров, свя­зан­ных с OrcusRAT:

ssl.cert.serial:9b7c73f9e35ae5663d239b046beab9
ssl.cert.issuer.cn:"Quasar Server CA"
ssl.cert.subject.cn:"Quasar Server CA"
 

TLS fingerprinting

По­мимо поис­ка по атри­бутам сер­тифика­тов, мож­но исполь­зовать методы TLS-фин­гер­прин­тинга:

  • JA3 — пас­сивный метод фин­гер­прин­тинга кли­ент­ской час­ти TLS-рукопо­жатия. Собира­ет нуж­ные дан­ные из пакета Client Hello и фор­миру­ет 32-сим­воль­ный MD5-хеш, по которо­му мож­но иден­тифици­ровать вре­донос­ное ПО.
  • JA3s — пас­сивный метод фин­гер­прин­тинга сер­верной час­ти TLS-рукопо­жатия, ана­лог JA3 для Server Hello. Исполь­зует­ся для иден­тифика­ции C2-сер­веров.
  • JARM — активный метод фин­гер­прин­тинга. Отправ­ляет десять пакетов Client Hello, извле­кает из отве­тов сер­вера нуж­ные дан­ные и фор­миру­ет 62-сим­воль­ный хеш: пер­вые 30 сим­волов — вер­сии и шиф­ры TLS, оставши­еся 32 — SHA-256-хеш рас­ширений сер­вера. Эффекти­вен для поис­ка ком­понен­тов вре­донос­ной инфраструк­туры.
  • JA4+ — набор методов фин­гер­прин­тинга, улуч­шенная вер­сия JA3 и JA3s. В отли­чие от пре­дыду­щих методов, JA4+ пред­став­лены в удоб­ном для чте­ния фор­мате и для людей, и для сис­тем, что повыша­ет эффектив­ность поис­ка и ана­лиза угроз. Допол­нитель­ную информа­цию смот­ри в до­кумен­тации JA4+.

Пред­положим, у нас есть IP-адрес для ана­лиза. Про­верив его в VirusTotal, мы уви­дим, что он свя­зан с боль­шим количес­твом потен­циаль­но опас­ных фай­лов.

Поп­робу­ем най­ти похожие хос­ты. Для это­го исполь­зуем JARM сер­вера: JA3 и JA3s уже уста­рели, а JA4+ отно­ситель­но новый и под­держи­вает­ся не все­ми поис­ковыми сис­темами. Поэто­му оста­новим­ся на JARM как на самом рас­простра­нен­ном методе. Пос­тро­им в Shodan такой поис­ковый зап­рос (зна­чение JARM сер­вера мож­но взять пря­мо из VirusTotal):

ssl.jarm:27d27d27d29d27d00042d42d000000c2e0293a1b1651a6ff2a5a0cba2b4d7f

В ито­ге мы получи­ли более 800 хос­тов, и боль­шая часть из них не вре­донос­на. Что­бы отсе­ять такие «лож­ные сра­баты­вания», нам нуж­но соб­рать боль­ше информа­ции.

Для начала про­ана­лизи­руем исходный IP-адрес. Видим, что на хос­те открыт 80‑й порт и мож­но пос­мотреть его заголов­ки.

Мо­дифи­циру­ем наш зап­рос:

ssl.jarm:27d27d27d29d27d00042d42d000000c2e0293a1b1651a6ff2a5a0cba2b4d7f Server: ipwhois

Мы сок­ратили выдачу до семи хос­тов с похожи­ми эле­мен­тами.

Ес­ли мы про­верим эти хос­ты в VirusTotal, то уви­дим, что они свя­заны с доволь­но боль­шим количес­твом вре­донос­ных фай­лов. И хотя сами адре­са могут быть легитим­ными, ана­лиз свя­зан­ных с ними вре­донос­ных фай­лов может дать цен­ную информа­цию для нашего иссле­дова­ния.

 

Рекомендации

По­иск инфраструк­туры зло­умыш­ленни­ков тре­бует одновре­мен­но струк­турно­го и твор­ческо­го под­хода. При про­веде­нии собс­твен­ного иссле­дова­ния:

  1. На­чинай с малого и рас­ширяй поиск пос­тепен­но. Сна­чала раз­бери один инди­катор, пой­ми его свой­ства и свя­зи, най­ди по ним сов­падения с дру­гими инди­като­рами, а уже потом перехо­ди к сле­дующим.
  2. Ищи законо­мер­ности в дей­стви­ях ата­кующе­го. Ана­лизи­руй его поведе­ние в ходе ата­ки, обра­щай вни­мание на пов­торя­ющиеся сце­нарии, исполь­зуемые инс­тру­мен­ты и тех­ники.
  3. Со­пос­тавляй дан­ные из раз­ных источни­ков. Ни один источник не даст всей нуж­ной информа­ции, поэто­му ком­бинируй нес­коль­ко, что­бы получить мак­сималь­но пол­ную и дос­товер­ную кар­тину.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии