Yazıda kullanılan Billy Madison sanal makinesi Vulnhub sitesinden indirilebilir.
https://www.vulnhub.com/entry/billy-madison-11,161/
Hedef sunucunun önceden belirlenmiş portlarına belirli bir sıra ile gönderilen istekler sonucunda, bu sunucuda istekleri dinleyen uygulamanın yetkileri ile belirli komutların çalıştırılması işlemine Port Knocking adı verilir. Bu komutlar ile yeni bir servis başlatılarak dışarıdan gelen taleplerin alınabileceği yeni bir port dinlenebilir, bir dosya veya kullanıcı oluşturulabilir, dışarıya paket gönderilebilir,… Bunun sebebi arka kapı bırakmak olabileceği gibi, bazı servislerin erişimini güvenlik sebebi ile gizlemek de olabilir.
Billy Madison sanal makinesinde mevcut durumda TCP/21’in açık olmadığı görülmektedir.
nmap -Pn -n –open 10.10.2.152
“1466 67 1469 1514 1981 1986” portlarına sorası ile birer SYN paketi gönderildiğinde ise FTP servisinin ayağa kalktığı görülecektir.
IP=10.10.2.152
for port in 1466 67 1469 1514 1981 1986; do nmap -Pn -n –max-retries 0 –host_timeout 5 -p $port $IP; done
Not: Nmap aşağıdaki gibi “-r” parametresi ile kullanılabileceği gibi, Nmap yerine telnet, hping, ncat araçları veya özel olarak “knock” aracı da kullanılabilir.
nmap -r -Pn 10.10.2.152 -p 1466,67,1468,1514,1981,1986
knock -v 10.10.2.152 1466 67 1468 1514 1981 1986
Tekrar port taraması yapıldığında FTP servisinin açıldığı görülmektedir.
nmap -Pn -n –open 10.10.2.152
Sunucu tarafında bu işlemi sağlamak için “knockd” uygulaması (deamon) bulunmaktadır. Bu servis sanal makine üzerinde “root” kullanıcısı yetkileri ile çalışmaktadır. Yapılandırma dosyasına bakıldığında logların düştüğü dosya(/var/log/syslog), hangi portların beklendiği, zaman aşımı süresi (5 saniye), çalışacak komut ve bu portlara gelecek paketlerde etkin olacak bayraklar (SYN) listelendiği görülmektedir. Bunun yanında “9900,8500,7004” portlarına paket geldiğinde ise ilgili kuralın silineceği görülmektedir.
ps -ef | grep knockd | grep -v grep
ls -la /usr/sbin/knockd
cat /etc/knockd.conf
ls -la /etc/knockd.conf
Not: host_timeout değeri 5 saniyeden (5000 milisaniye) daha büyük bir değer verilirse knockd uygulamasındaki kural tetiklenmeyecektir.
Kayıtların tutulacağı dosya olarak “UseSyslog” belirtildiği için ilgili kayıtlar “/var/log/syslog” diznine düşmektedir. FTP servisinin açılması sırasında kayıtlar aşağıdaki gibidir.
cat syslog
Not: Kayıtların tutulacağı dosya özel olarak da belirtilebilirdi.
logfile = /usr/Loglar/knock-servisi.log
Bunun yanında “9900,8500,7004” portlarına SYN paketi gönderildiğinde düşen kayıtlar ise aşağıdaki gibidir.
echo “” > syslog
netstat -nlpt | grep 21
tail -f syslog | grep knockdIP=10.10.2.152
for port in 9900,8500,7004; do nmap -Pn -n –max-retries 0 –host_timeout 5 -p $port $IP; done
Not: Eğer bazı portların UDP olması isteniyorsa aşağıdaki gibi bir sıralama da gerçekleştirilebilirdi.
sequence = 1466:udp,67:udp,1468:tcp,1514:tcp,1981:udp,1986:tcp
Yukarıdaki durumda, portları çağırmak için de aşağıdaki gibi bir komut çalıştırılabilirdi.
knock -v 10.10.2.152 1466:udp 67:udp 1468:tcp 1514:tcp 1981:udp 1986:tcp
Yukarıdaki durumda, Hping3 aracı ile portları çağırmak için de aşağıdaki gibi bir komut çalıştırılabilirdi.
IP=10.10.2.152
hping3 $IP -2 -p 1466 -c 1
hping3 $IP -2 -p 67 -c 1
hping3 $IP -p 1468 -c 1
hping3 $IP -p 1514 -c 1
hping3 $IP -2 -p 1981 -c 1
hping3 $IP -p 1986 -c 1
Port Knocking tekniğinin kullanılabileceği bir başka makine de Vulnhub (https://www.vulnhub.com/entry/lord-of-the-root-101,129/) üzerindeki Lord Of The Root: 1.0.1 sanal makinesidir. Bu makinedeki yapılandırma ayarları ve 1337 portunun açılması aşağıdaki gibidir.
telnet 172.20.50.131 1 &
telnet 172.20.50.131 2 &
telnet 172.20.50.131 3 &cat /etc/knockd.conf
cat /var/log/syslog
Belirtilen zafiyetin bulunduğu diğer sanal ortamlardan bazıları aşağıdaki gibidir:
- Nineveh: v0.3: https://www.vulnhub.com/entry/nineveh-v03,222/
- Port Listesi: 571, 290, 911
- Açılan Port: 22
- Lord Of The Root: 1.0.1: https://www.vulnhub.com/entry/lord-of-the-root-101,129
- Port Listesi: 1, 2, 3
- Açılan Port: 1337
Kaynak:
http://www.mrb3n.com/?p=342
https://www.bgasecurity.com/2014/05/port-knocking-yontemi-ile-portlar/
https://www.bilgiguvenligi.gov.tr/guvenlik-testleri/port-knocking-girmeden-once-kapiyi-calmak-2.html
http://www.harunseker.org/2012/12/knockd-ile-port-knock.html
http://www.portknocking.org/docs/portknocking_an_introduction.pdf
Güzel bir yazı. Port knocking önleminin herkese açık olmaması gereken tüm servisler için uygulanması gerektiğini düşünüyorum.