# Writeup: Утечка данных с сервера Pinecraft (DNS-туннель + HTTP)

**Категория:** Форензика

**Класс:** 10

**Файлы:** `pinecraft_dns_tunnel.pcap`

**Флаги:** 3

## Вступление

Во время Гранд-Турнира Pinecraft файрвол зафиксировал аномальные DNS-запросы и подозрительный HTTP-трафик. Нам дают дамп сетевого трафика и просят разобраться: куда утекали данные и что именно было украдено.

Задача знакомит с DNS-туннелированием -- техникой, при которой данные передаются через DNS-запросы в обход стандартных средств мониторинга. DNS-трафик обычно разрешён на файрволах, поэтому атакующие используют его как скрытый канал.

## Флаг 1: Домен C2-сервера

### Шаг 1. Открываем PCAP и изучаем DNS-трафик

Загружаем `pinecraft_dns_tunnel.pcap` в Wireshark. Применяем фильтр:

```
dns
```

Видим DNS-запросы к различным доменам. Большинство из них легитимные -- серверы Minecraft и связанные сервисы:

- `mojang.com`
- `minecraft.net`
- `api.minecraftservices.com`
- `sessionserver.mojang.com`

Но среди них выделяется домен, которого здесь быть не должно: **`mc-textures.evil.net`**.

![](img/scr0.png)

Домен маскируется под сервис текстур Minecraft (mc-textures), но принадлежит зоне `.evil.net`. Для быстрого обнаружения можно использовать **Statistics -> DNS** в Wireshark или отсортировать запросы по домену.

### Шаг 2. Подтверждаем через tshark

```bash
tshark -r pinecraft_dns_tunnel.pcap -Y "dns.qry.name" \
  -T fields -e dns.qry.name | sort -u
```

Вывод покажет все уникальные запрошенные домены. Фильтруем известные легитимные:

```bash
tshark -r pinecraft_dns_tunnel.pcap -Y "dns.qry.name" \
  -T fields -e dns.qry.name | sort -u | \
  grep -v -E "mojang|minecraft|microsoft|google|cloudflare"
```

Остаётся только `mc-textures.evil.net` и его поддомены.

![](img/SCR-20260325-oyjo.png)
**Флаг 1:** `vsosh{mc-textures.evil.net}`

---

## Флаг 2: Данные из DNS-туннеля

### Шаг 3. Находим DNS-эксфильтрацию

Теперь фильтруем запросы к поддоменам `data.mc-textures.evil.net`:

```
dns.qry.name contains "data.mc-textures"
```

Обнаруживаем серию DNS A-запросов с характерной структурой:

```
7031.data.mc-textures.evil.net
6e33.data.mc-textures.evil.net
6372.data.mc-textures.evil.net
3466.data.mc-textures.evil.net
745f.data.mc-textures.evil.net
6c33.data.mc-textures.evil.net
346b.data.mc-textures.evil.net
```

Это классический DNS-туннель: данные закодированы в hex и передаются как поддомены DNS-запросов. Каждый запрос несёт 2 байта данных (4 hex-символа).

### Шаг 4. Извлекаем и декодируем hex

Собираем все поддомены первого уровня (до `.data.`), склеиваем в одну строку и декодируем из hex:

```bash
tshark -r pinecraft_dns_tunnel.pcap \
  -Y 'dns.qry.name contains "data.mc-textures"' \
  -T fields -e dns.qry.name \
  | sed 's/\.data\.mc-textures\.evil\.net//' \
  | uniq \
  | tr -d '\n' \
  | xxd -r -p
```

![](img/SCR-20260325-parr.png)

Результат: `p1n3cr4ft_l34k`

Разбор по шагам:

| Hex-чанк | ASCII |
|----------|-------|
| `7031` | `p1` |
| `6e33` | `n3` |
| `6372` | `cr` |
| `3466` | `4f` |
| `745f` | `t_` |
| `6c33` | `l3` |
| `346b` | `4k` |

Склеиваем: `p1n3cr4ft_l34k` (от "pinecraft leak").

**Флаг 2:** `vsosh{p1n3cr4ft_l34k}`

---

## Флаг 3: Украденный токен администратора

### Шаг 5. Находим HTTP POST к C2

Переключаемся на HTTP-трафик:

```
http.request.method == POST
```

Находим HTTP POST-запрос к `http://mc-textures.evil.net:8080/collect`. Это ещё один канал эксфильтрации -- более прямолинейный, через HTTP.

![](img/SCR-20260325-payu.png)

### Шаг 6. Декодируем тело запроса

Тело POST-запроса закодировано в base64. Извлекаем и декодируем:

```bash
tshark -r pinecraft_dns_tunnel.pcap \
  -Y "http.request.method == POST" \
  -T fields -e http.file_data \
  | xxd -r -p
  | base64 -d
```

Получаем JSON:

```json
{
    "server_id": "pinecraft-main",
    "admin_token": "4dm1n_t0k3n_st0l3n",
    "players": 42,
    "version": "1.20.4"
}
```

Значение поля `admin_token`: `4dm1n_t0k3n_st0l3n` (от "admin token stolen").

**Флаг 3:** `vsosh{4dm1n_t0k3n_st0l3n}`

---

## Итог

| # | Флаг | Техника |
|---|------|---------|
| 1 | `vsosh{mc-textures.evil.net}` | Обнаружение аномального домена среди легитимного DNS-трафика |
| 2 | `vsosh{p1n3cr4ft_l34k}` | Извлечение hex-данных из поддоменов DNS-запросов (DNS tunneling) |
| 3 | `vsosh{4dm1n_t0k3n_st0l3n}` | Декодирование base64-тела HTTP POST, парсинг JSON |

DNS-туннелирование --  техника (T1071.004 по MITRE ATT&CK), которую используют APT-группировки для обхода сетевого мониторинга. Инструменты вроде `iodine`, `dnscat2`, `dns2tcp` автоматизируют этот процесс. Для обнаружения в реальных условиях анализируют длину DNS-запросов, энтропию поддоменов и частоту запросов к нетипичным доменам.
