[THM] Cat Pictures
- Date: 2021년 12월 12일
Essential
- Port Knocking, 포트 노킹
- 정의
- 방화벽 포트를 닫아 서버를 보호하는 방법이다.
- 개요
- 서버는 닫혀 있는 포트에 대해 패턴을 설정하며 클라이언트는 닫혀있는 포트에 대해 특정 패턴을 연결 요청을 하면 서버의 특정 포트를 개방하거나 폐쇄할 수 있다.
- 언제?
- 포트 스캐닝 툴을 이용해 개방된 포트이 노출 될 수 있는데 이를 숨기고자 할 때 사용할 수 있다.
Configure
개요
- Port Knocking을 통해 22 번 포트를 접근해보자
Port Knocking, 포트 노킹을 설정하는 방법
knockd 설치하기
sudo apt-get install knockd
iptables에서 개방 포트 막기
iptable에서 ssh 서비스를 제한시키자
```bash
ubuntu @ ubuntu2004 ~
└─ $ ▶ sudo iptables -A INPUT -p tcp --dport 22 -j DROP
ubuntu @ ubuntu2004 ~
└─ $ ▶ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp dpt:ssh
```
Port Knocking 설정하기
설정 파일:
/etc/knockd.conf
[options] UseSyslog [openSSH] sequence = 7000,8000,9000 seq\_timeout = 5 command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9000,8000,7000 seq\_timeout = 5 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn
[OpenSSH\]
sequence
- 특정 포트를 열기 위한 포트의 패턴
- 7000,8000,9000 이므로 순서대로 요청
- 특정 포트를 열기 위한 포트의 패턴
seq_timeout
sequence
의 패턴을 입력 시간- seconds 단위이므로 위의 설정에서는 5초를 의미함
command
sequence
가seq_timeout
내에 성공했을 때 실행되는 명령어- iptables를 명령어를 이용하여 특정 IP 특정 포트를
개방
혹은폐쇄
할 수 있음
tcpflags
sequence
패킷을 어떤 방식으로 지정할 것인지 지정하는 옵션임- 위 설정에서는 syn 패킷을 받을 때 인식함
[CloseSSH]
- 각 설정의 내용은
[OpenSSH]
과 다른 건 없음- OpenSSH 와 반대로 sequence 패턴이 입력되었을 때 포트틀 닫는 설정
- 각 설정의 내용은
Test
- SERVER = 192.168.0.7 (ubuntu)
- CLIENT = 192.168.0.2 (kali)
Port KNocking 전
nmap을 통해 22 ssh 포트가 닫혀있는 것 확인
──(kali@kali)-\[~\] └─$ sudo nmap -sC -sV 192.168.0.7 127 x \[sudo\] password for kali: Starting Nmap 7.91 ( [https://nmap.org](https://nmap.org) ) at 2021-12-12 03:59 EST Nmap scan report for 192.168.0.7 Host is up (0.00022s latency). Not shown: 998 closed ports PORT STATE SERVICE VERSION 22/tcp filtered ssh 80/tcp open http nginx 1.18.0 (Ubuntu) |\_http-server-header: nginx/1.18.0 (Ubuntu) |\_http-title: 502 Bad Gateway MAC Address: 00:0C:29:05:FA:42 (VMware) Service Info: OS: Linux; CPE: cpe:/o:linux:linux\_kernel Service detection performed. Please report any incorrect results at [https://nmap.org/submit/](https://nmap.org/submit/) . Nmap done: 1 IP address (1 host up) scanned in 7.96 seconds
Port Knocking tool
kali 에서 이용가능한 port knocking tool 설치
sudo apt-get install knockd
사용 예제
knock 192.168.0.7 7000 8000 9000
Port Knocking 후
┌──(kali@kali)-\[~\]
└─$ knock 192.168.0.7 7000 8000 9000
┌──(kali@kali)-\[~\]
└─$ sudo nmap -sCV -A 192.168.0.7 -T4
Starting Nmap 7.91 ( [https://nmap.org](https://nmap.org) ) at 2021-12-12 04:20 EST
Nmap scan report for 192.168.0.7
Host is up (0.00037s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 47:7c:5a:cc:25:f2:93:cb:56:4b:cb:3c:ab:7d:c4:25 (RSA)
| 256 52:7c:dd:17:f6:3c:36:75:5a:d8:08:1a:f8:0e:d2:60 (ECDSA)
|\_ 256 06:c4:fa:3a:c5:b2:7a:41:80:3e:2c:f7:32:e0:a3:9b (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|\_http-server-header: nginx/1.18.0 (Ubuntu)
|\_http-title: 502 Bad Gateway
MAC Address: 00:0C:29:05:FA:42 (VMware)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux\_kernel:4 cpe:/o:linux:linux\_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux\_kernel
TRACEROUTE
HOP RTT ADDRESS
1 0.37 ms 192.168.0.7
OS and Service detection performed. Please report any incorrect results at [https://nmap.org/submit/](https://nmap.org/submit/) .
Nmap done: 1 IP address (1 host up) scanned in 8.18 seconds
Note
- ubuntu 에서 knockd를 설치하면 바로 시작되진않음
- knockd는 `eth0` 라고 이름붙은 NIC를 기준으로 설정하는 것 같음
- 이를 해결하기위해 ubuntu의 초기 설정에 ens33라고 이름 붙은 nic를 `eth0` 를 설정헤야함
'Pentest > Methodology' 카테고리의 다른 글
[Method] : SSH Public Key Login (0) | 2020.12.13 |
---|---|
RustScan : The Modern Port Scanner? (0) | 2020.11.07 |
sha512 Dictionary attack (with John) (0) | 2020.09.28 |
Hydra & NSE 커맨드 팁 (0) | 2020.09.28 |