Przejdź do treści

MWDB (mwdb.cert.pl)

MWDB (Malware Database) to zaawansowana platforma analityczna stworzona przez CERT Polska, służąca do zbierania, analizowania i udostępniania informacji o złośliwym oprogramowaniu. MWDB obejmuje:

  • Serwis mwdb.cert.pl stanowiący repozytorium informacji o malware i umożliwiający analizę próbek,
  • Oprogramowanie otwartoźródłowe MWDB Core udostępniane na licencji AGPL-3.0, które umożliwia analitykom uruchomienie własnej instancji MWDB i integrację z własnymi narzędziami analitycznymi.

Rozwój systemu wspiera pracę analityków cyberbezpieczeństwa w Polsce i na świecie, umożliwiając wymianę wiedzy oraz efektywne śledzenie trendów w obszarze szkodliwego oprogramowania.

Dostęp do systemu mwdb.cert.pl

System mwdb.cert.pl udostępniany jest analitykom złośliwego oprogramowania i specjalistom cyberbezpieczeństwa, w szczególności:

  • specjalistom IT security zatrudnionym w firmach zajmujących się analizą złośliwego oprogramowania
  • specjalistom IT security zatrudnionym w publicznych instytucjach lub prywatnych firmach mających istotny wpływ na cyberbezpieczeństwo (np. krajowe zespoły CSIRT, banki, instytucje rządowe itp.)
  • niezależnym badaczom złośliwego oprogramowania (dostęp udzielany na podstawie udokumentowanych i publicznie dostępnych badań)

O konto można zawnioskować na stronie https://mwdb.cert.pl/register, podając służbowy adres e-mail i dodatkowe informacje umożliwiające identyfikację. W przypadku niezależnych badaczy, mile widziane są linki do profili i stron internetowych, które umożliwiają weryfikację, że adres e-mail faktycznie należy do osoby wnioskującej o konto. W przypadku kont służbowych warto podać informację o zajmowanym stanowisku i realizowanych zadaniach związanych z analizą złośliwego oprogramowania.

Zgłoszenia są weryfikowane przez CERT Polska i po pomyślnej akceptacji wniosku, na podany adres e-mail wysyłany jest link umożliwiający ustawienie hasła i korzystanie z systemu. Wniosek może zostać również odrzucony - w takim wypadku wysyłana jest wiadomość e-mail z informacją o braku akceptacji.

Wniosek o konto zazwyczaj rozpatrywany jest w ciągu 7 dni, ale czas ten może ulec wydłużeniu.

Co jeśli nie otrzymałem odpowiedzi?

Wnioski potraktowane jako spam odrzucane są bez odpowiedzi np. gdy wykorzystano jednorazowy, tymczasowy adres e-mail. Korzystamy z tej możliwości wyłącznie w szczególnych przypadkach.

Jeśli nie otrzymałeś informacji zwrotnej, najprawdopodobniej popełniono literówkę w adresie e-mail lub nie powiodła się wysyłka wiadomości. Jeśli przez długi czas nie otrzymujesz odpowiedzi lub nie otrzymałeś potwierdzenia złożenia wniosku o konto - poinformuj nas o tym, wysyłając e-mail na info@cert.pl, wraz z loginem i adresem e-mail podanym we wniosku.

Przed zawnioskowaniem o konto w systemie należy zapoznać się z Ogólnymi warunkami korzystania z Systemu MWDB.

Dane udostępniane w ramach mwdb.cert.pl

W ramach serwisu mwdb.cert.pl udostępniamy próbki złośliwego oprogramowania i informacje będące rezultatem ich analizy tj. statyczne konfiguracje, zrzuty pamięci, IoC z ruchu sieciowego podczas wykonywania w sandboksie itp. Udostępniane dane pochodzą ze źródeł oznaczonych jako publiczne, takich jak pliki pochodzące z serwisu MalwareBazaar czy pobrane z adresów URL wymienianych za pośrednictwem URLhaus.

Jakie informacje udostępniamy?

Główny widok MWDB zawiera informacje o najnowszych plikach dodanych i udostępnionych w systemie.

Widok najnowszych próbek

W MWDB wyróżniamy trzy podstawowe typy obiektów:

  • Samples - pliki stanowiące próbki złośliwego oprogramowania. Wśród plików można znaleźć zarówno pliki dystrybuowane w ramach kampanii (pliki wykonywalne, skrypty, archiwa), jak i surowe artefakty z analizy, takie jak np. zrzuty pamięci. Każdy plik opisany jest m.in. nazwą, typem (wynik polecenia file), tagami i datą dodania. Pliki są identyfikowane zestawem hashy: MD5, SHA1, SHA256, SHA512. Wyliczane są również wartości CRC32 i ssdeep (tzw. fuzzy hash, który może posłużyć do stwierdzania podobieństwa między zawartością plików).

Widok szczegółowy próbki

  • Configs - ustrukturyzowane konfiguracje przechowywane w formacie JSON, pozyskiwane statycznie z próbek. Zawierają m.in. adresy serwerów C2, klucze szyfrujące, nazwy kampanii czy inne parametry działania malware. Są one pozyskiwane przez dedykowane skrypty, napisane z myślą o ekstrakcji tego typu informacji z próbek złośliwego oprogramowania danej rodziny.

Widok szczegółowy konfiguracji

  • Blobs - niestrukturyzowane dane tekstowe, np. webinjecty, listy odszyfrowanych łańcuchów znaków czy tekstowe reprezentacje konfiguracji pobranych bezpośrednio z serwera C2.

Widok szczegółowy obiektu typu Blob

Pomiędzy obiektami zachodzą relacje (parent/child) - przykładowo konfiguracja wyciągnięta z próbki jest jej "dzieckiem", a kilka próbek może współdzielić tę samą konfigurację. Relacje te można przeglądać w formie grafu w widoku szczegółowym próbki.

Graf relacji obiektów

System mwdb.cert.pl automatycznie wzbogaca obiekty o wyniki analizy prowadzonej przez wewnętrzny system Karton, który integruje komponenty rozpoznające typ pliku, wypakowujące archiwa, dokonujące analizy informacji pozyskanych z sandboxa (opisanego w osobnym artykule o DRAKVUF Sandbox) itp.

Wyszukiwanie informacji w systemie MWDB

MWDB udostępnia zaawansowany silnik wyszukiwania oparty na podzbiorze składni Lucene. Najprostszy sposób na znalezienie próbki to wklejenie jej hasha (lub listy haszy) do pola szybkiego wyszukiwania nad listą Recent - system po wciśnięciu Enter automatycznie doda prefiks multi: do zapytania.

Pole wyszukiwania

Innym, wygodnym sposobem jest wyszukiwanie interaktywne. Po kliknięciu na tag lub wartość atrybutu, MWDB przekierowuje do wyników zapytania, które szuka innych elementów z tą samą wartością pod zadanym kluczem.

Interaktywne wyszukiwanie

Podstawowe pola, po których można wyszukiwać:

  • tag:<wartość> - po tagu, np. tag:emotet
  • name:<wartość> - po nazwie pliku
  • type:<wartość> - po typie pliku (z dopuszczalnymi wildcardami, np. type:PE32*)
  • size:<liczba> - po rozmiarze, np. size:>=500kB
  • upload_time:<data> - po dacie dodania, np. upload_time:>=2024-01-01
  • dhash:<hash> - po identyfikatorze obiektu (SHA256)
  • comment:<treść> - po treści komentarza
  • attribute.<nazwa>:<wartość> - po wartości atrybutu

Pole wyszukiwania automatycznie podpowiada pola i dostępne atrybuty.

Podpowiedzi wyszukiwania

Operatorami AND, OR i NOT (zapisywanymi wielkimi literami) oraz nawiasami można budować złożone zapytania, np.:

tag:remcos AND NOT tag:"feed:spam"

Wartości liczbowe i daty pozwalają na wyszukiwanie zakresów:

size:[50 TO 50000]
upload_time:>=2024-01-01
upload_time:>=2h            # obiekty dodane w ciągu ostatnich 2 godzin
upload_time:<=1m5d          # obiekty starsze niż miesiąc i 5 dni

Treść konfiguracji (JSON) można przeszukiwać po ścieżkach z użyciem notacji z kropką:

cfg.urls:*example.com*        # dowolne wystąpienie "example.com" w kluczu "urls" w statycznych konfiguracjach

Dla zaawansowanych zapytań dostępne są też subqueries na relacjach parent/child:

# próbki, których dzieckiem jest konfiguracja Remcosa
child:(config.family:remcos)

# próbki, których rodzicem jest plik rozpoznany jako archiwum (wypakowane z archiwów)
parent:(tag:"archive:*")

Pod polem wyszukiwania znajdują się quick queries - gotowe filtry w postaci badge'y, m.in. Only uploaded by me, Exclude public, Exclude feed:* czy Only ripped:*. Kliknięciem w Add + można dodać własne zapytanie jako nowy badge, by szybko do niego wracać.

Quick queries

Pełny opis składni można znaleźć w dokumentacji systemu MWDB.

Dodawanie próbek do systemu MWDB

Użytkownicy serwisu mają również możliwość dodania własnych próbek, które następnie są automatycznie analizowane przez wewnętrzne systemy CERT Polska. Dodanie pliku nadaje dostęp do wszelkich dodatkowych informacji, które wynikają z tego pliku.

Widok dodawania plików

Użytkownicy mogą także oznaczyć dodawane pliki jako publiczne, co pozwala na udostępnienie ich szerokiemu gronu użytkowników MWDB. Domyślne ustawienie All my groups sprawia, że pliki są widoczne wyłącznie dla prywatnych grup użytkownika (zazwyczaj samego użytkownika).

Uwaga!

CERT Polska ma dostęp do wszystkich plików w systemie mwdb.cert.pl bez względu na ustawienia widoczności. Przesyłając próbkę do systemu mwdb.cert.pl, udzielasz CERT Polska licencji na udostępnienie próbki innym firmom, organizacjom lub osobom prywatnym. W większości przypadków pliki analizowane są za pomocą wewnętrznych systemów, jednak zastrzegamy sobie prawo do udostępnienia informacji podmiotom zewnętrznym np. na potrzeby badań czy pogłębionej analizy.

Interfejs dodawania próbki pozwala również na dodanie dodatkowych atrybutów, takich jak URL z którego pochodzi plik czy hasło do archiwum.

Dodawanie atrybutów do pliku

Obsługa archiwów zabezpieczonych hasłem

MWDB automatycznie odpakowuje archiwa zabezpieczone standardowym hasłem infected, ale może nie być w stanie przeanalizować zawartości archiwum, jeśli zostało spakowane z użyciem niestandardowego hasła. W takim wypadku warto dodać atrybut password i podać w nim hasło do pliku, aby umożliwić jego przeanalizowanie.

Maksymalny obsługiwany rozmiar pliku wynosi 100MB.

Integracja MWDB z innymi systemami

Wszystkie funkcje dostępne z poziomu interfejsu WWW są również dostępne przez REST API, co pozwala zintegrować MWDB z zewnętrznymi narzędziami i procesami automatyzacji.

REST API

Pełna dokumentacja API (Swagger) jest dostępna w serwisie pod adresem /docs - można ją przetestować bezpośrednio z poziomu przeglądarki, korzystając z przycisku Try it out.

Widok Swagger w MWDB

Większość endpointów wymaga autoryzacji nagłówkiem Authorization: Bearer <token>, w którym należy podać klucz API.

curl https://mwdb.cert.pl/api/file -H "Authorization: Bearer <token>"

Tokeny (klucze API) tworzy się w widoku Profile → API keys. Jest to rekomendowany sposób uwierzytelniania w skryptach, alternatywny do hasła.

Biblioteka mwdblib (Python)

Najwygodniejszym sposobem integracji jest biblioteka Python mwdblib:

from mwdblib import MWDB

mwdb = MWDB(api_key="ey...")

# pobranie najnowszej próbki
file = next(mwdb.recent_files())
print(file.name, file.sha256)

# upload próbki jako publiczny feed
with open("sample.exe", "rb") as f:
    obj = mwdb.upload_file("sample.exe", f.read(), public=True)
    obj.add_tag("feed:moj-feed")

Biblioteka wspiera też nasłuchiwanie na nowo dodane obiekty - przydatne, gdy MWDB ma być źródłem danych (feed) dla innych systemów:

for sample in mwdb.listen_for_files():
    print(f"Nowa próbka: {sample.sha256}")

Interfejs CLI

mwdblib dostarcza również opcjonalny interfejs wiersza poleceń (pip install mwdblib[cli]), który obejmuje najczęstsze operacje:

mwdb login                  # uwierzytelnienie (login/hasło lub klucz API)
mwdb list                   # lista najnowszych próbek
mwdb get <sha256>           # szczegóły obiektu
mwdb upload sample.exe      # upload pliku
mwdb fetch <sha256> --keep-name   # pobranie pliku
mwdb tag sample.exe maybe:netwire # nadanie tagu

Interfejs CLI może być z powodzeniem wykorzystany w skryptach i prostych one-linerach.

Przykładowo: poniższe polecenie pobiera 10 najnowszych haszy plików, które otagowane są jako ripped:agenttesla.

$ mwdb search files 'tag:"ripped:agenttesla"' -n 10 -o short

bd21fdda899e4f6c30256dfdcae7190019c67d75a843b7812469dcd5cb6d5199
14baf68493884627a2f32a5776d3871750f1d994c176d07e81b7db23be49e359
01e278f3a95ab90c2c7b494f951ff042017b722039a4732e539f6e48516ccaf4
7c9c0371c729dd759610e2b4ec2bd4ede128aa7e647d8a6a87dfae9dc244adaa
d6bc75454a074071b15fd9ba7420a9e3665c94c3d27b638239a247313151362f
f611d9ad58f5ad721c638b264f76ac1236c0c95434050dda1e561503f7f12c99
fd4a337a7c2448617bff0e1c7cf7f3d2cf40683b0b33d1d079dba5f0c9a48856
50172f6d874ad77cc5b8eb60a8398af3b2b36112682a71347949fc53fdecf0ef
ed55240010a53cbdd86904d0a735f10b0840878cc18b95875befb2c388dae7d2
7bb6e05a13c2dce3efb23b5906b45f396e1d55b5301e5361a570263a428acabb

Następnie można pobrać wskazane pliki poprzez przekazanie wyjścia do polecenia xargs -n 1 mwdb fetch, które dla każdej linii wywoła polecenie mwdb fetch <sha256>:

$ mwdb search files 'tag:"ripped:agenttesla"' -n 10 -o short | xargs -n 1 mwdb fetch

Downloaded bd21fdda899e4f6c30256dfdcae7190019c67d75a843b7812469dcd5cb6d5199 => bd21fdda899e4f6c30256dfdcae7190019c67d75a843b7812469dcd5cb6d5199
Downloaded 14baf68493884627a2f32a5776d3871750f1d994c176d07e81b7db23be49e359 => 14baf68493884627a2f32a5776d3871750f1d994c176d07e81b7db23be49e359
Downloaded 01e278f3a95ab90c2c7b494f951ff042017b722039a4732e539f6e48516ccaf4 => 01e278f3a95ab90c2c7b494f951ff042017b722039a4732e539f6e48516ccaf4
Downloaded 7c9c0371c729dd759610e2b4ec2bd4ede128aa7e647d8a6a87dfae9dc244adaa => 7c9c0371c729dd759610e2b4ec2bd4ede128aa7e647d8a6a87dfae9dc244adaa
Downloaded d6bc75454a074071b15fd9ba7420a9e3665c94c3d27b638239a247313151362f => d6bc75454a074071b15fd9ba7420a9e3665c94c3d27b638239a247313151362f
Downloaded f611d9ad58f5ad721c638b264f76ac1236c0c95434050dda1e561503f7f12c99 => f611d9ad58f5ad721c638b264f76ac1236c0c95434050dda1e561503f7f12c99
Downloaded fd4a337a7c2448617bff0e1c7cf7f3d2cf40683b0b33d1d079dba5f0c9a48856 => fd4a337a7c2448617bff0e1c7cf7f3d2cf40683b0b33d1d079dba5f0c9a48856
Downloaded 50172f6d874ad77cc5b8eb60a8398af3b2b36112682a71347949fc53fdecf0ef => 50172f6d874ad77cc5b8eb60a8398af3b2b36112682a71347949fc53fdecf0ef
Downloaded ed55240010a53cbdd86904d0a735f10b0840878cc18b95875befb2c388dae7d2 => ed55240010a53cbdd86904d0a735f10b0840878cc18b95875befb2c388dae7d2
Downloaded 7bb6e05a13c2dce3efb23b5906b45f396e1d55b5301e5361a570263a428acabb => 7bb6e05a13c2dce3efb23b5906b45f396e1d55b5301e5361a570263a428acabb

Analiza automatyczna (Karton)

W ramach mwdb.cert.pl każda dodana próbka jest automatycznie analizowana przez Karton - framework do orkiestracji analiz malware rozwijany przez CERT Polska. W efekcie analizy powstają m.in. wyciągnięte konfiguracje, które automatycznie zostają powiązane z plikiem wejściowym.

Udostępnianie własnego feedu

Osoby i instytucje, które chcą regularnie dzielić się próbkami, mogą skonfigurować własny feed. Rekomendujemy wtedy:

  • nadanie tagu feed:<nazwa> każdemu wrzucanemu obiektowi - dzięki temu inni użytkownicy mogą łatwo filtrować próbki z danego źródła,
  • oznaczenie pliku jako public (ustawienie Share with: Everybody) - dane udostępniane są wtedy wszystkim użytkownikom MWDB,
  • dodanie dodatkowych odniesień do zewnętrznych serwisów za pomocą atrybutów (wymaga wcześniejszej rejestracji klucza atrybutu - w przypadku mwdb.cert.pl prosimy o kontakt pod [email protected]).

Najczęściej zadawane pytania

Czy dostęp do mwdb.cert.pl jest płatny?

Nie. Korzystanie z serwisu jest bezpłatne, wymaga jednak zawnioskowania o konto i pomyślnej weryfikacji przez CERT Polska (patrz: Dostęp do systemu mwdb.cert.pl).

Kto może założyć konto?

Konto mogą założyć m.in. specjaliści IT security analizujący złośliwe oprogramowanie (w firmach, instytucjach publicznych) oraz niezależni badacze malware z udokumentowaną, publicznie dostępną działalnością badawczą. Szczegóły znajdują się w sekcji Dostęp do systemu mwdb.cert.pl.

Skąd pochodzą próbki udostępniane w serwisie?

Próbki pochodzą ze źródeł publicznych, m.in. z serwisu MalwareBazaar oraz adresów URL dystrybuowanych przez URLhaus, a także z próbek dodawanych przez użytkowników systemu, które użytkownik zdecydował się udostępnić.

Czy mogę uruchomić własną instancję MWDB?

Tak. System MWDB Core jest oprogramowaniem otwartoźródłowym udostępnianym na licencji AGPL-3.0. Kod źródłowy i instrukcję instalacji znajdziesz w repozytorium CERT-Polska/mwdb-core.

Chcę znaleźć wszystkie próbki, które są powiązane z daną domeną? Jak to zrobić?

MWDB aktualnie nie dostarcza funkcji, która pozwalałaby na znalezienie wszystkich wystąpień danej domeny lub adresu IP w atrybutach i statycznych konfiguracjach bez względu na kontekst.

Natomiast takie informacje można wyszukać w kontekście danego atrybutu np. attribute.network-dns:"example.com" wyszuka próbki, które podczas analizy w sandboksie próbowały kontaktować się z domeną example.com.

Dlaczego niektóre próbki mają mniej informacji niż pozostałe?

Ze względu na ograniczone zasoby, próbki z feedów o dużym wolumenie nie są analizowane w sandboksie, a wyłącznie analizowane statycznie. W związku z tym informacje na ich temat mogą być niepełne.

Dodałem do mwdb.cert.pl plik, który nie powinien się tam znaleźć. Co powinienem zrobić?

Poinformuj nas o tym, kontaktując się z nami pod adresem info@cert.pl. W uzasadnionych przypadkach możemy usunąć plik z systemu lub uczynić go niedostępnym dla innych użytkowników.

Jak zgłosić błąd lub pomysł do systemu?

W sprawach dotyczących serwisu mwdb.cert.pl lub dotyczących błędów bezpieczeństwa w oprogramowaniu - prosimy o kontakt pod adresem info@cert.pl. Zgłoszenia dotyczące oprogramowania MWDB Core i biblioteki mwdblib można kierować bezpośrednio w sekcji Issues w repozytoriach na GitHubie (CERT-Polska/mwdb-core, CERT-Polska/mwdblib).

Dokumentacja

Pełne informacje na temat serwisu mwdb.cert.pl i systemu MWDB Core można znaleźć w dokumentacji ReadTheDocs.

W szczególności znajduje się tam przewodnik, który opisuje krok po kroku elementy systemu i sposób korzystania z nich. Udostępniamy również bibliotekę mwdblib w języku Python, która pozwala na prostą integrację z systemem za pośrednictwem API. Biblioteka dostarcza również prosty interfejs CLI, który może być pomocny przy automatyzacji.

Ostatnia aktualizacja artykułu: 2026-09-02.