ค้นหาเว็บไซต์

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 รายการแล้ว หากคุณทราบกรณีการใช้งานจริงอื่นๆ โปรดแบ่งปันกับเราผ่านแบบฟอร์มคำติชมด้านล่าง คุณสามารถถามคำถามได้เช่นกัน