본문으로 바로가기

[TIL] Port Knocking

category Pentest/Methodology 2021. 12. 12. 19:27
728x90
반응형

[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
        • sequenceseq_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

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를 설치하면 바로 시작되진않음
728x90
반응형

'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