Bagaimana cara mengetahui proses apa yang memiliki port tertentu terbuka di Linux?


32

Saya menjalankan nmap di server saya dan menemukan port aneh terbuka. Saya mencoba mencari tahu apakah ada cara untuk memetakan port itu ke proses tertentu tetapi tidak tahu apakah ada alat seperti itu.

Ada saran?


Jawaban:


57

Seperti halnya Netstat, yang disebutkan dalam posting lain, perintah lsof harus dapat melakukan ini dengan baik. Gunakan ini saja:

lsof -i :<port number>

dan semua proses harus muncul. Saya menggunakannya pada OS X cukup sering.

Artikel Administrasi Debian untuk lsof


menarik. Saya tidak tahu tentang ini. Namun, saya melihat ini sebagai hasil dari upaya peretasan. mesin adalah milik teman. Anda dapat telnet ke port yang menyinggung TETAPI DAN netstat keduanya tidak mengungkapkan port sebagai terbuka.
jnman

portnya adalah 5631 yang menurut / etc / services adalah pcanywheredata sehingga sangat mencurigakan.
jnman

Nah, itu bagus, saya tidak tahu itu! Netstat yang selalu digunakan. Terima kasih
buster

4
Jika netstat atau lsof menunjukkan port yang digunakan, tetapi mesin merespons, kemungkinan sudah ada root kit yang diinstal. Saya sarankan memindahkan data dari mesin di tempat lain dan kemudian nuking itu.
Kamil Kisiel

6
Ini memang rootkit. Saya telah melihat perilaku ini sebelumnya, dan itu selalu merupakan rootkit. Sistem Anda terganggu, dan alat apa pun yang Anda gunakan tidak dapat dipercaya. Boot ke Live CD (yang memiliki binari tepercaya yang hanya bisa dibaca) dan gunakan itu untuk mengekstrak data, pengaturan, dll. Program apa pun yang Anda miliki, skrip apa pun yang Anda miliki, tinggalkan saja. Jangan bawa mereka. Perlakukan sistem seolah-olah menderita kusta, karena ia / tidak /. Setelah selesai, nuke dari orbit. Lakukan ini sesegera mungkin. Oh, dan cabut koneksi jaringan Anda - tolak akses penyerang Anda.
Avery Payne

23

Peringatan: Sistem Anda terganggu.

Alat yang Anda butuhkan adalah lsof, yang akan mencantumkan file (dan soket dan port). Kemungkinan besar diinstal, dan kemungkinan besar versi penyerang, yang berarti itu akan berbohong kepada Anda.

Ini memang rootkit. Saya telah melihat perilaku ini sebelumnya, dan itu selalu merupakan rootkit. Sistem Anda terganggu, dan alat apa pun yang Anda gunakan yang berasal dari mesin yang sama tidak dapat dipercaya. Boot ke Live CD (yang memiliki binari tepercaya yang hanya bisa dibaca) dan gunakan itu untuk mengekstrak data, pengaturan, dll. Program apa pun yang Anda miliki, skrip apa pun yang Anda miliki, tinggalkan saja . Jangan bawa mereka . Perlakukan mereka, dan sistem, seolah-olah mereka menderita kusta, karena memang demikian .

Setelah selesai, nuke dari orbit .

Game over man, game over.

Lakukan ini sesegera mungkin. Oh, dan cabut koneksi jaringan Anda - tolak akses penyerang Anda.


1
Ini benar-benar mengatakan semuanya. Cari tahu apa yang salah, ratakan server, kembalikan dari cadangan yang baik yang terakhir diketahui. Hidup ini terlalu singkat untuk bermain game.
Rob Moir

2
Cukup tambahkan: pastikan Anda tahu tanggal pembobolan, karena Anda mungkin memulihkan rootkit yang sama dengan yang baru saja Anda hapus. Kalau tidak, ya, pulihkan dari / sebelum / tanggal itu.
Avery Payne

1
Grafik yang lucu. Saya tahu sistemnya terganggu (untungnya itu bukan milik saya). Pertanyaan saya lebih penasaran tentang melacak bagaimana dia masuk di tempat pertama. Saya curiga melalui php / joomla tetapi ingin memahami bagaimana / mengapa port ini tetap terbuka ketika tidak ada alat deteksi root kit yang menunjukkan port itu.
jnman

1
lol @ "Oh, dan cabut koneksi jaringan Anda"
theman_on_osx

6
Sebelum Anda melompat ke kesimpulan itu , ada penjelasan lain yang mungkin untuk port tak terduga dibuka; seperti paket yang Anda instal tetapi lupa.
David J.

14
sudo netstat -lnp  

Daftar port yang mendengarkan koneksi masuk dan proses terkait yang memiliki port terbuka.


4

netstat -anp

"-P" memberitahukannya untuk mencantumkan proses-ID yang membuka porta. -An mengatakannya untuk mendaftar port mendengarkan dan tidak menyelesaikan nama. Pada sistem sibuk yang dapat sangat mempercepat seberapa cepat ia kembali.

netstat -anp | grep "DAFTAR"

Itu hanya akan memberi Anda port terbuka.


4

Jika Anda tidak dapat melihat port terbuka dengan alat sistem operasi dan Anda mencurigai adanya gangguan, bisa jadi rootkit telah diinstal.

Rootkit dapat mengubah alat sistem untuk menghindari proses dan port tertentu atau mengubah modul kernel.

Anda dapat memeriksa rootkit dengan beberapa alat otomatis. 'apt-cache search rootkit' menunjukkan yang berikut di Ubuntu:

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

Jika Anda memiliki rootkit, Anda dapat mengembalikan 'perubahan' ke sistem Anda, tetapi saya sarankan Anda mencari tahu bagaimana intrusi dibuat dan mengeraskan sistem agar tidak mengulangi.


Mereka tidak eksklusif untuk Ubuntu, Anda dapat menggunakannya di CentOS juga. Cari saja paketnya atau unduh dari halaman mereka.


Dengan output dari port itu tampaknya Anda menjalankan pcanywhere memang: " Ы <Enter>" sangat mirip dengan "Silakan tekan <Enter>" yang merupakan pesan selamat datang pcanywhere. Saya tidak tahu mengapa prosesnya tidak muncul dalam daftar proses. Apakah Anda root?

Anda dapat mencoba mem-boot ulang untuk melihat apakah itu proses satu kali yang berjalan juga.


ada saran untuk centos?
jnman

anehnya, unhide-tcp tidak menunjukkan port yang mencurigakan. chkrootkit / rkhunter melaporkan semua jelas (tetapi sebagian besar karena saya menghapus dir mencurigakan sebelum mengajukan pertanyaan ini)
jnman

FWIW, rootkit telah menginstal dirinya sebagai apache di / var / tmp / ... dan /var/tmp/.ICE-Unix/* Yang kedua adalah licik karena saya tidak memperhatikannya pertama kali dan saya bertanya-tanya bagaimana sih proses bash terus memunculkan dirinya setelah terbunuh.
jnman

Ternyata cracker memasang pekerjaan cron.
jnman

0

Untuk menguraikan jawaban oleh @bjtitus Anda bisa mendapatkan info yang sangat rinci, misalnya:

$ 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

Saya dapat melihat di sana bahwa cumi-cumi adalah prosesnya, tetapi sebenarnya itu cumi saya squid-deb-proxy yang mengambil port.

Contoh bagus lain dari aplikasi 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

Anda dapat melihat lsof(LiSt Open Files) bahwa itu adalah java, yang kurang bermanfaat. Menjalankan psperintah dengan PID kita dapat langsung melihat bahwa itu adalah CrashPlan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.