Netcat
Netcat (nc) কে বলা হয় “network-এর Swiss Army Knife”। এটা দিয়ে port check, service banner দেখা, file transfer, এবং CTF/pentesting-এর সবচেয়ে গুরুত্বপূর্ণ কাজ — reverse shell। একটাই tool, অনেক কাজ।
Netcat কী করে
Netcat মূলত দুটো machine-এর মধ্যে raw TCP/UDP connection তৈরি করে।
এই connection দিয়ে তুমি যা খুশি পাঠাতে পারো — text, file, commands। এই simplicity-ই এটাকে এত powerful করে।
Machine A (তুমি) ←──TCP connection──→ Machine B (target/server)
nc ncInstallation
# Ubuntu/Debian
sudo apt install netcat-openbsd
# Version check
nc -h
# Traditional netcat (কিছু CTF-এ এটা লাগে)
sudo apt install netcat-traditionalnc vs ncat: Kali Linux-এ ncat থাকে (Nmap-এর version)। Ubuntu-তে nc থাকে। দুটোর syntax প্রায় একই। CTF-এ যেটা available সেটা ব্যবহার করো।
Port Check
Port open কিনা দেখো — nmap ছাড়া।
# একটা port open কিনা দেখো
nc -zv 192.168.1.100 22
# -z = connect করো কিন্তু data পাঠিও না
# -v = verbose output
# Output: Connection to 192.168.1.100 22 port [tcp/ssh] succeeded!
# Port range scan করো
nc -zv 192.168.1.100 20-80
# Timeout set করো — ৩ সেকেন্ড
nc -zv -w 3 192.168.1.100 443Banner Grabbing
Service connect করে দেখো কী response পাঠায় — version, software বের হয়।
# SSH banner grab
nc 192.168.1.100 22
# Output: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6
# HTTP server info
echo "HEAD / HTTP/1.0" | nc 192.168.1.100 80
# Output: Server: Apache/2.4.41
# FTP banner
nc 192.168.1.100 21
# Output: 220 vsftpd 3.0.3কেন banner grabbing কাজে লাগে: Software version জানলে সেই version-এ known vulnerability আছে কিনা খুঁজতে পারো।
Chat / Connection
দুটো terminal-এ nc চালিয়ে সরাসরি message পাঠানো যায়।
Server side (listens)
# Port 4444-এ listen করো
nc -lvnp 4444
# -l = listen mode
# -v = verbose
# -n = numeric (DNS resolve করো না)
# -p = port numberFile Transfer
Receiver (আগে চালাও)
# File receive করার জন্য listen করো
nc -lvnp 4444 > received_file.txtFile transfer কখন কাজে লাগে: CTF-এ target machine-এ shell পাওয়ার পর — সেই machine থেকে file নিয়ে আসতে বা exploit পাঠাতে nc file transfer ব্যবহার হয়।
Reverse Shell
Reverse shell — CTF-এর সবচেয়ে গুরুত্বপূর্ণ concept।
সাধারণত তুমি target machine-এ connect করো। কিন্তু target machine firewall দিয়ে incoming connection block করতে পারে।
Reverse shell-এ উল্টোটা হয়: target machine তোমার machine-এ connect করে। Firewall outgoing connection সাধারণত block করে না।
Normal: তুমি ──connect──→ target (firewall block করতে পারে)
Reverse: target ──connect──→ তুমি (firewall সাধারণত block করে না)Step by step:
তোমার machine (attacker)
# Step 1: তোমার machine-এ listener চালু করো
nc -lvnp 4444
# তোমার IP জানো
ip a | grep "inet " | grep tun0
# ধরো: 10.10.14.5Target command চালালে তোমার listener-এ shell পেয়ে যাবে:
# তোমার terminal-এ দেখবে:
nc -lvnp 4444
Listening on 0.0.0.0 4444
Connection received on 10.10.10.50 54321
# এখন target machine-এর shell তোমার হাতে:
whoami
www-dataReverse shell — কোথায় command আসে: Target machine-এ কোনো vulnerability exploit করে বা web application-এ code execution পেলে সেখানে এই command চালাতে হয়। CTF-এ এটাই “initial foothold”।
Shell upgrade করো — nc shell অনেক সময় limited হয়:
python3 -c 'import pty; pty.spawn("/bin/bash")'
# অথবা
script /dev/null -c bashQuick Reference
# Port check
nc -zv target 22
# Banner grab
nc target 80
# Listen করো
nc -lvnp 4444
# File receive
nc -lvnp 4444 > file.txt
# File send
nc target 4444 < file.txt
# Reverse shell listener
nc -lvnp 4444Quick Check
-
nc -lvnp 4444এর প্রতিটা flag কী করে? - Banner grabbing কেন করা হয়?
- Reverse shell কেন normal connection-এর চেয়ে বেশি কার্যকর?
- File transfer-এ receiver আর sender কোনটা আগে চালাতে হয় এবং কেন?
- Reverse shell পাওয়ার পর shell upgrade কেন করবে?
পরবর্তী Section → Package Management