จะทราบได้อย่างไรว่ากระบวนการใดมีพอร์ตเฉพาะที่เปิดอยู่บน Linux


32

ฉันรัน nmap บนเซิร์ฟเวอร์ของฉันและพบว่ามีพอร์ตแปลก ๆ ที่เปิดอยู่ ฉันพยายามที่จะคิดออกว่ามีวิธีการแมปพอร์ตนั้นกับกระบวนการเฉพาะ แต่ไม่รู้ว่ามีเครื่องมือดังกล่าวหรือไม่

ข้อเสนอแนะใด ๆ


โหวตขึ้นอันดับ # 1 คำตอบใน Gogle มิถุนายน 2018
SDsolar

คำตอบ:


57

เช่นเดียวกับ Netstat ที่กล่าวถึงในโพสต์อื่น ๆ คำสั่ง lsof ควรจะสามารถทำได้ดี เพียงใช้สิ่งนี้:

lsof -i :<port number>

และกระบวนการทั้งหมดควรเกิดขึ้น ฉันใช้มันบน OS X ค่อนข้างบ่อย

บทความ Debian Administration สำหรับ lsof


น่าสนใจ ฉันไม่รู้เกี่ยวกับสิ่งนี้ อย่างไรก็ตามฉันกำลังมองหาสิ่งนี้อันเป็นผลมาจากความพยายามในการแฮ็ค เครื่องเป็นของเพื่อน คุณสามารถเทลเน็ตไปยังพอร์ตที่ละเมิด แต่ lsof และ netstat ทั้งคู่ไม่เปิดเผยพอร์ตว่าเปิดอยู่
jnman

พอร์ตเป็น 5631 ซึ่งตาม / etc / services pcanywheredata น่าสงสัยมาก
jnman

ตอนนี้มันเยี่ยมฉันไม่รู้เลย! ใช้ netstat เสมอ ขอบคุณ
buster

4
หาก netstat หรือ lsof ไม่แสดงพอร์ตที่ใช้งานอยู่ แต่เครื่องกำลังตอบกลับไปแสดงว่ามีโอกาสที่จะติดตั้งชุดคิทรูท ฉันขอแนะนำให้ย้ายข้อมูลใด ๆ ออกจากเครื่องไปที่อื่น
Kamil Kisiel

6
นี่เป็นรูทคิทจริงๆ ฉันได้เห็นพฤติกรรมเช่นนี้มาก่อนและมันเป็นเสมอรูทคิ ระบบของคุณถูกบุกรุกและเครื่องมือใด ๆ ที่คุณใช้ไม่สามารถเชื่อถือได้ บูตลงใน Live CD (ซึ่งมีไบนารีที่เชื่อถือได้อ่านอย่างเดียว) และใช้เพื่อแยกข้อมูลการตั้งค่า ฯลฯ โปรแกรมใด ๆ ที่คุณมีสคริปต์ใด ๆ ที่คุณมีทิ้งไป อย่านำพวกเขา ปฏิบัติต่อระบบราวกับว่ามันเป็นโรคเรื้อนเพราะ / มัน / เมื่อคุณทำเสร็จแล้วก็ให้ออกจากวงโคจร ทำสิ่งนี้โดยเร็วที่สุด โอ้และถอดการเชื่อมต่อเครือข่ายของคุณ - ปฏิเสธการเข้าถึงของผู้โจมตี
Avery Payne

23

คำเตือน: ระบบของคุณถูกบุกรุก

เครื่องมือที่คุณต้องการคือlsofรายการไฟล์ (และซ็อกเก็ตและพอร์ต) มีการติดตั้งที่น่าจะเป็นไปได้มากที่สุดและเป็นเวอร์ชั่นที่น่าจะเป็นของผู้โจมตีซึ่งหมายความว่ามันจะโกหกคุณ

นี่เป็นรูทคิทจริงๆ ฉันได้เห็นพฤติกรรมเช่นนี้มาก่อนและมันเป็นเสมอรูทคิ ระบบของคุณถูกบุกรุกและเครื่องมือใด ๆ ที่คุณใช้ซึ่งมาจากเครื่องเดียวกันไม่สามารถเชื่อถือได้ บูตลงใน Live CD (ซึ่งมีไบนารีที่เชื่อถือได้อ่านอย่างเดียว) และใช้เพื่อแยกข้อมูลการตั้งค่า ฯลฯ โปรแกรมใด ๆ ที่คุณมีสคริปต์ใด ๆ ที่คุณมีทิ้งไป อย่านำพวกเขา ปฏิบัติต่อพวกเขาและระบบเช่นถ้าพวกเขามีโรคเรื้อนเพราะพวกเขาทำ

เมื่อคุณทำเสร็จแล้วnuke มันจากวงโคจร

เกมเหนือมนุษย์เกมเหนือ

ทำสิ่งนี้โดยเร็วที่สุด โอ้และถอดการเชื่อมต่อเครือข่ายของคุณ - ปฏิเสธการเข้าถึงของผู้โจมตี


1
มันบอกว่ามันทั้งหมดจริงๆ คิดออกว่าเกิดข้อผิดพลาดอย่างไรเซิร์ฟเวอร์จะแบนราบคืนค่าจากการสำรองข้อมูลที่ดีที่ทราบล่าสุด ชีวิตสั้นเกินไปที่จะเล่นเกม
Rob Moir

2
เพียงเพิ่ม: ให้แน่ใจว่าคุณรู้วันที่หยุดพักเนื่องจากคุณอาจกู้คืนรูทคิทเดียวกับที่คุณเพิ่งลบ มิฉะนั้นให้เรียกคืนจาก / ก่อน / วันที่
Avery Payne

1
นั่นเป็นกราฟิกที่ตลก ฉันรู้ว่าระบบถูกบุกรุก (โชคดีที่มันไม่ใช่ของฉัน) คำถามที่ฉันอยากรู้เพิ่มเติมเกี่ยวกับการติดตามว่าเขาเข้ามาในตอนแรกได้อย่างไร ฉันสงสัยผ่าน php / joomla แต่ต้องการที่จะเข้าใจว่า / ทำไมพอร์ตนี้จึงเปิดอยู่เมื่อไม่มีเครื่องมือตรวจหาชุดคิทรูทแสดงพอร์ตนั้น
jnman

1
lol @ "โอ้และถอดการเชื่อมต่อเครือข่ายของคุณ"
theman_on_osx

6
ก่อนที่คุณจะข้ามไปยังข้อสรุปนั้นมีคำอธิบายอื่น ๆ ที่เป็นไปได้สำหรับพอร์ตที่ไม่คาดคิดกำลังเปิดอยู่ เช่นแพ็คเกจที่คุณติดตั้ง แต่ลืมไป
David J.

14
sudo netstat -lnp  

แสดงรายการพอร์ตที่กำลังรับฟังการเชื่อมต่อขาเข้าและกระบวนการที่เกี่ยวข้องที่เปิดพอร์ต


4

netstat -anp

"-p" บอกให้แสดงรายการ process-ID ที่เปิดพอร์ต - บอกให้รายการลิสต์ฟังและไม่แก้ไขชื่อ สำหรับระบบไม่ว่างที่สามารถเร่งความเร็วในการคืนค่าได้อย่างมาก

netstat -anp | grep "LIST"

นั่นจะให้พอร์ตเปิดแก่คุณ


4

หากคุณไม่เห็นพอร์ตที่เปิดด้วยเครื่องมือระบบปฏิบัติการและคุณสงสัยว่าอาจมีการติดตั้งรูทคิทอยู่

รูทคิทอาจมีการเปลี่ยนแปลงเครื่องมือระบบเพื่อหลีกเลี่ยงกระบวนการและพอร์ตบางอย่างหรือเปลี่ยนโมดูลเคอร์เนล

คุณสามารถตรวจสอบรูทคิทด้วยเครื่องมืออัตโนมัติหลายอย่าง 'apt-cache search rootkit' แสดงสิ่งต่อไปนี้ใน Ubuntu:

chkrootkit - rootkit detector
rkhunter - rootkit, backdoor, sniffer and exploit scanner
unhide - Forensic tool to find hidden processes and ports

หากคุณมีรูทคิทคุณสามารถเปลี่ยน 'เปลี่ยน' เป็นระบบของคุณได้ แต่ฉันขอแนะนำให้คุณดูว่าการเข้ามาของ Intrussion ทำอย่างไรและทำให้ระบบแข็งขึ้นเพื่อไม่ให้ซ้ำ


พวกเขาไม่ได้ จำกัด เฉพาะ Ubuntu คุณสามารถใช้พวกเขาใน CentOS ได้เช่นกัน เพียงมองหาแพ็คเกจหรือดาวน์โหลดจากหน้าเว็บของพวกเขา


จากผลลัพธ์จากพอร์ตนั้นดูเหมือนว่าคุณกำลังใช้ pcanywhere แน่นอน: " Ы <Enter>" คล้ายกับ "กรุณากด <Enter>" ซึ่งเป็นข้อความต้อนรับ pcanywhere ฉันไม่รู้ว่าทำไมกระบวนการไม่ปรากฏในรายการกระบวนการ คุณรูทหรือเปล่า

คุณสามารถลองรีบูตเครื่องเพื่อดูว่าเป็นกระบวนการที่ใช้ครั้งเดียวหรือไม่


คำแนะนำสำหรับ centos?
jnman

อย่างแปลกประหลาด unhide-tcp จะไม่แสดงพอร์ตที่น่าสงสัยใด ๆ chkrootkit / rkhunter สำหรับแพลตฟอร์มวินโดวส์รายงานทุกอย่างชัดเจน ( แต่ส่วนใหญ่เพราะผมถูกลบ dirs ที่น่าสงสัยก่อนที่จะถามคำถามนี้)
jnman

FWIW รูทคิทติดตั้งตัวเองเป็นอาปาเช่ใน / var / tmp / ... และ /var/tmp/.ICE-Unix/* อันที่สองเป็นเรื่องลับๆล่อๆตั้งแต่ฉันไม่ได้สังเกตเห็นมันเป็นครั้งแรกและฉันสงสัยว่า heck เป็นกระบวนการทุบตียังคงวางไข่เองหลังจากถูกฆ่าตาย
jnman

ปรากฎว่าแครกเกอร์ติดตั้งงาน cron
jnman

0

หากต้องการอธิบายเกี่ยวกับคำตอบโดย @bjtitus คุณสามารถรับข้อมูลโดยละเอียดตัวอย่างเช่น:

$ lsof -i :8000
COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)

$ ps -fp 1289
UID        PID  PPID  C STIME TTY          TIME CMD
proxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

ฉันเห็นได้ว่าปลาหมึกเป็นกระบวนการ แต่มันเป็นเรื่องจริงที่ฉันsquid-deb-proxyจะจับพอร์ต

อีกตัวอย่างที่ดีของแอพ java:

$ lsof -i :4242
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)

$ ps -fp 3075
UID        PID  PPID  C STIME TTY          TIME CMD
root      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

คุณสามารถดูได้ในlsof(LiSt Open Files) ว่าเป็นจาวาซึ่งมีประโยชน์น้อยกว่า เรียกใช้psคำสั่งด้วย PID ที่เราเห็นได้ทันทีว่าเป็น CrashPlan

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.