8 คำสั่ง Netcat (nc) พร้อมตัวอย่าง
Netcat (หรือเรียกสั้น ๆ ว่า nc) เป็นเครื่องมือบรรทัดคำสั่งเครือข่ายที่เรียบง่ายแต่ทรงพลัง ซึ่งใช้สำหรับดำเนินการใดๆ ใน Linux ที่เกี่ยวข้องกับ TCP, UDP หรือซ็อกเก็ตโดเมน UNIX
Netcat สามารถใช้สำหรับการสแกนพอร์ต การเปลี่ยนเส้นทางพอร์ต เป็นตัวฟังพอร์ต (สำหรับการเชื่อมต่อขาเข้า) นอกจากนี้ยังสามารถใช้เพื่อเปิดการเชื่อมต่อระยะไกลและอื่นๆ อีกมากมาย นอกจากนี้คุณยังสามารถใช้เป็นแบ็คดอร์เพื่อเข้าถึงเซิร์ฟเวอร์เป้าหมายได้
ในบทความนี้ เราจะอธิบายคำสั่งการใช้งาน Netcat พร้อมตัวอย่าง
วิธีการติดตั้งและใช้ Netcat ใน Linux
หากต้องการติดตั้ง แพ็คเกจ netcat บนระบบของคุณ ให้ใช้ตัวจัดการแพ็คเกจเริ่มต้นสำหรับการแจกจ่าย Linux ของคุณ
yum install nc [On CentOS/RHEL]
dnf install nc [On Fedora 22+ and RHEL 8]
sudo apt-get install Netcat [On Debian/Ubuntu]
เมื่อติดตั้ง แพ็คเกจ netcat แล้ว คุณสามารถดำเนินการต่อเพื่อเรียนรู้การใช้งาน คำสั่ง netcat ในตัวอย่างต่อไปนี้
การสแกนพอร์ต
Netcat สามารถใช้สำหรับการสแกนพอร์ต: เพื่อให้ทราบว่าพอร์ตใดที่เปิดอยู่และใช้บริการบนเครื่องเป้าหมาย สามารถสแกนพอร์ตเดียวหรือหลายพอร์ตหรือหลายพอร์ตที่เปิดอยู่
นี่คือตัวอย่าง ตัวเลือก -z
จะตั้งค่า nc ให้สแกนหา Listening Daemon โดยไม่ต้องส่งข้อมูลใดๆ ไปให้พวกมันเลย ตัวเลือก -v
เปิดใช้งานโหมด verbose และ -w
ระบุการหมดเวลาสำหรับการเชื่อมต่อที่ไม่สามารถสร้างได้
nc -v -w 2 z 192.168.56.1 22 #scan a single port
OR
nc -v -w 2 z 192.168.56.1 22 80 #scan multiple ports
OR
nc -v -w 2 z 192.168.56.1 20-25 #scan range of ports
ถ่ายโอนไฟล์ระหว่างเซิร์ฟเวอร์ Linux
Netcat ช่วยให้คุณสามารถถ่ายโอนไฟล์ระหว่างคอมพิวเตอร์หรือเซิร์ฟเวอร์ Linux สองเครื่อง และทั้งสองระบบนี้จะต้องติดตั้ง nc
ตัวอย่างเช่น หากต้องการคัดลอกไฟล์อิมเมจ ISO จากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งและติดตามความคืบหน้าในการถ่ายโอน (โดยใช้ยูทิลิตี้ pv) ให้รันคำสั่งต่อไปนี้บนคอมพิวเตอร์ผู้ส่ง/เซิร์ฟเวอร์ (ที่มีไฟล์ ISO อยู่)
สิ่งนี้จะทำงาน nc ในโหมดการฟัง (แฟล็ก -l
) บนพอร์ต 3000
tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso | pv | nc -l -p 3000 -q 5
และบนคอมพิวเตอร์เครื่องรับ/ไคลเอนต์ ให้รันคำสั่งต่อไปนี้เพื่อรับไฟล์
nc 192.168.1.4 3000 | pv | tar -zxf -
สร้างเซิร์ฟเวอร์แชทบรรทัดคำสั่ง
คุณยังสามารถใช้ Netcat เพื่อสร้างเซิร์ฟเวอร์การส่งข้อความบรรทัดคำสั่งง่ายๆ ได้ทันที เช่นเดียวกับในตัวอย่างการใช้งานก่อนหน้านี้ ต้องติดตั้ง nc บนทั้งสองระบบที่ใช้สำหรับห้องสนทนา
ในระบบหนึ่ง ให้รันคำสั่งต่อไปนี้เพื่อสร้างเซิร์ฟเวอร์แชทที่รับฟังบนพอร์ต 5000
nc -l -vv -p 5000
บนระบบอื่น ให้รันคำสั่งต่อไปนี้เพื่อเรียกทำงานเซสชันการสนทนาไปยังเครื่องที่เซิร์ฟเวอร์ข้อความกำลังทำงานอยู่
nc 192.168.56.1 5000
สร้างเว็บเซิร์ฟเวอร์พื้นฐาน
ด้วยตัวเลือก -l
ของ คำสั่ง NC ที่ใช้ในการสร้างเว็บเซิร์ฟเวอร์พื้นฐานที่ไม่ปลอดภัย เพื่อให้บริการไฟล์เว็บแบบคงที่เพื่อการเรียนรู้ เพื่อสาธิตสิ่งนี้ ให้สร้างไฟล์ .html
ตามที่แสดง
vim index.html
เพิ่มบรรทัด HTML ต่อไปนี้ในไฟล์
<html>
<head>
<title>Test Page</title>
</head>
<body>
<p>Serving this file using Netcat Basic HTTP server!</p>
</body>
</html>
บันทึกการเปลี่ยนแปลงในไฟล์และออก
จากนั้นให้บริการไฟล์ด้านบนผ่าน HTTP โดยการรันคำสั่งต่อไปนี้ ซึ่งจะทำให้เซิร์ฟเวอร์ HTTP ทำงานอย่างต่อเนื่อง
while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done
จากนั้นเปิดเว็บเบราว์เซอร์และสามารถเข้าถึงเนื้อหาโดยใช้ที่อยู่ต่อไปนี้
http://localhost:8080
OR
http://SERVER_IP:8080
โปรดทราบว่าคุณสามารถหยุด เซิร์ฟเวอร์ Netcat HTTP ได้โดยการกด [Ctrl+ C]
แก้ไขปัญหาการเชื่อมต่อเซิร์ฟเวอร์ Linux
การใช้งานที่มีประโยชน์อีกประการหนึ่งของ Netcat คือการแก้ไขปัญหาการเชื่อมต่อเซิร์ฟเวอร์ ที่นี่ คุณสามารถใช้ Netcat เพื่อตรวจสอบว่าเซิร์ฟเวอร์ส่งข้อมูลใดเพื่อตอบสนองต่อคำสั่งที่ออกโดยไคลเอ็นต์
คำสั่งต่อไปนี้ดึงข้อมูลหน้าแรกของ example.com
printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80
ผลลัพธ์ของคำสั่งข้างต้นรวมถึงส่วนหัวที่ส่งโดยเว็บเซิร์ฟเวอร์ซึ่งสามารถใช้เพื่อการแก้ไขปัญหาได้
ค้นหาบริการที่ทำงานบนพอร์ต
คุณยังสามารถใช้ Netcat เพื่อรับแบนเนอร์พอร์ตได้ ในกรณีนี้ มันจะบอกคุณว่าบริการใดทำงานอยู่หลังพอร์ตบางพอร์ต ตัวอย่างเช่น หากต้องการทราบว่าบริการประเภทใดที่ทำงานอยู่หลังพอร์ต 22 บนเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่ง ให้รันคำสั่งต่อไปนี้ (แทนที่ 192.168.56.110 ด้วยที่อยู่ IP ของเซิร์ฟเวอร์เป้าหมาย) ธง -n
หมายถึงการปิดใช้ DNS หรือการค้นหาบริการ
nc -v -n 192.168.56.110 80
สร้างซ็อกเก็ตสตรีม
Netcat ยังสนับสนุนการสร้างซ็อกเก็ตสตรีมโดเมน UNIX คำสั่งต่อไปนี้จะสร้างและฟังบนซ็อกเก็ตสตรีมโดเมน UNIX
nc -lU /var/tmp/mysocket &
ss -lpn | grep "/var/tmp/"
สร้างแบ็คดอร์
คุณสามารถเรียกใช้ Netcat เป็นประตูหลังได้เช่นกัน อย่างไรก็ตาม สิ่งนี้เรียกร้องให้มีการทำงานมากขึ้น หากติดตั้ง Netcat บนเซิร์ฟเวอร์เป้าหมาย คุณสามารถใช้มันเพื่อสร้างแบ็คดอร์ เพื่อรับพรอมต์คำสั่งระยะไกล
ในการดำเนินการแบ็คดอร์ คุณต้อง Netcat เพื่อรับฟังพอร์ตที่เลือก (เช่น พอร์ต 3001) บนเซิร์ฟเวอร์เป้าหมาย จากนั้นคุณสามารถเชื่อมต่อกับพอร์ตนี้จากเครื่องของคุณดังต่อไปนี้
นี่คือคำสั่งที่มีวัตถุประสงค์เพื่อรันบนเซิร์ฟเวอร์ระยะไกลโดยที่ตัวเลือก -d
ปิดใช้งานการอ่านจาก stdin และ -e
ระบุคำสั่งที่จะรันบนระบบเป้าหมาย
nc -L -p 3001 -d -e cmd.exe
สุดท้ายแต่ไม่ท้ายสุด Netcat สามารถใช้เป็นพร็อกซีสำหรับบริการ/โปรโตคอลต่างๆ รวมถึง HTTP, SSH และอื่นๆ อีกมากมาย สำหรับข้อมูลเพิ่มเติม โปรดดูที่หน้าคู่มือ
man nc
ในบทความนี้ เราได้อธิบายตัวอย่างการใช้คำสั่ง Netcat ในทางปฏิบัติ 8 รายการแล้ว หากคุณทราบกรณีการใช้งานจริงอื่นๆ โปรดแบ่งปันกับเราผ่านแบบฟอร์มคำติชมด้านล่าง คุณสามารถถามคำถามได้เช่นกัน