sobota, 21 grudnia 2024

Niezbędnik pentestera infrastruktury #6 - crt.sh

crt.sh to przede wszystkim zaawansowana platforma do monitorowania i analizy certyfikatów SSL/TLS stworzona przez Sectigo (daswniej Comodo), która pozwala również na przeprowadzanie szczegółowego rekonesansu (np. wyszukiwanie ukrytych subdomen).

Platforma agreguje informacje z publicznych logów Certificate Transparency (CT), dostarczając kompleksowy wgląd w historię i aktualny stan certyfikatów dla dowolnej domeny.

Co to jest crt.sh?

crt.sh to publiczna wyszukiwarka logów Certificate Transparency, która umożliwia śledzenie i analizę certyfikatów SSL/TLS wydanych dla domen internetowych. Platforma indeksuje dane z większości głównych logów CT, oferując kompletny obraz cyfrowej obecności organizacji w kontekście używanych certyfikatów.

Pozwala to również na odnalezienie subdomen, normalnie niemożliwych do pozyskania przy użyciu innych narzędzi, jak np. opisywany w poprzednim wpisie VirusTotal.

Jak działa crt.sh?

Platforma wykorzystuje wielowarstwowe podejście do monitorowania certyfikatów:

  • Ciągłe monitorowanie i indeksowanie wszystkich głównych logów Certificate Transparency
  • Agregacja i normalizacja danych o certyfikatach z różnych źródeł
  • Udostępnianie zaawansowanych funkcji wyszukiwania i filtrowania wyników
  • Śledzenie historii certyfikatów dla poszczególnych domen
  • Oferowanie dostępu przez API i eksport danych w różnych formatach

Zastosowania crt.sh

  • Cyberbezpieczeństwo: Wykrywanie nieautoryzowanych certyfikatów i potencjalnych ataków
  • Rekonesans: Identyfikacja subdomen i infrastruktury organizacji
  • Monitoring: Śledzenie wygasających certyfikatów i zmian w infrastrukturze
  • Audyt: Weryfikacja zgodności z polityką certyfikatów organizacji
  • Threat Intelligence: Wykrywanie potencjalnych kampanii phishingowych

Jak korzystać z crt.sh?

Rejestracja i dostęp:

  1. Wejść na stronę crt.sh
  2. Nie jest wymagana rejestracja do podstawowego użycia
  3. Wykorzystać API dla automatyzacji zapytań

Dane dostępowe do bazy danych:

  • Host: crt.sh
  • Port: 5432
  • Baza danych: certwatch
  • Użytkownik: guest (bez hasła)

Przykład połączenia przez psql:

psql -h crt.sh -p 5432 -U guest -d certwatch

Przykładowy skrypt w Pythonie:

python
import psycopg2 def connect_to_crtsh(): try: conn = psycopg2.connect( host="crt.sh", port=5432, database="certwatch", user="guest" ) return conn except Exception as e: print(f"Błąd połączenia: {e}") return None def query_crtsh(domain): conn = connect_to_crtsh() if conn: try: cur = conn.cursor() query = """ SELECT ci.NAME_VALUE, c.ISSUER_CA_ID, ca.NAME, x509_notBefore(c.CERTIFICATE), x509_notAfter(c.CERTIFICATE) FROM certificate_identity ci JOIN certificate c ON ci.CERTIFICATE_ID = c.ID JOIN ca ON c.ISSUER_CA_ID = ca.ID WHERE ci.NAME_TYPE = 'dNSName' AND lower(ci.NAME_VALUE) LIKE lower(%s) LIMIT 100; """ cur.execute(query, ('%' + domain + '%',)) results = cur.fetchall() return results except Exception as e: print(f"Błąd zapytania: {e}") finally: conn.close() return None

Użyteczne zapytania SQL

Znalezienie wszystkich subdomen:

sql

SELECT DISTINCT(lower(ci.NAME_VALUE)) FROM certificate_identity ci WHERE ci.NAME_TYPE = 'dNSName' AND lower(ci.NAME_VALUE) LIKE lower('%.example.com');

Znalezienie certyfikatów wydanych w ostatnich 90 dniach:

sql

SELECT ci.NAME_VALUE, x509_notBefore(c.CERTIFICATE), x509_notAfter(c.CERTIFICATE) FROM certificate_identity ci JOIN certificate c ON ci.CERTIFICATE_ID = c.ID WHERE ci.NAME_TYPE = 'dNSName' AND x509_notBefore(c.CERTIFICATE) >= NOW() - INTERVAL '90 days' AND lower(ci.NAME_VALUE) LIKE lower('%.example.com');

Ważne uwagi

  • Połączenie jest ograniczone do 1000 wierszy na zapytanie
  • Zaleca się dodawanie klauzuli LIMIT do zapytań
  • Należy unikać zbyt częstych zapytań, aby nie przeciążać serwera
  • Niektóre zapytania mogą wymagać optymalizacji ze względu na dużą ilość danych

Kluczowe możliwości

  • Kompleksowe wyszukiwanie certyfikatów
  • Zaawansowane filtry i opcje wyszukiwania
  • Eksport danych w wielu formatach (JSON, CSV)
  • Dostęp przez API REST
  • Możliwość tworzenia własnych zapytań SQL

Podsumowanie

crt.sh to niezbędne narzędzie w arsenale każdego profesjonalisty zajmującego się cyberbezpieczeństwem. Łącząc potężne możliwości wyszukiwania z prostym interfejsem, platforma stanowi złoty standard w dziedzinie monitorowania certyfikatów SSL/TLS i wykrywania ukrytych elementów infrastruktury.