Bagaimana cara mengunjungi Universitas Korea dengan Sistem File Jaringan


Kata Pengantar


Sekali waktu di awal 2000-an, banyak yang terhibur oleh fakta bahwa mereka secara teratur "memindai" jaringan penyedia mereka, dan kadang-kadang bahkan target yang lebih jauh, untuk mendeteksi mesin Windows dan sumber daya pada mereka (SMB), tersedia untuk membaca (menulis). Proses pencarian adalah primitif: serangkaian alamat IP atau topeng jaringan telah ditetapkan, dan melalui berbagai alat - LANguard Network Scanner, xIntruder dan sejenisnya - alamat dipindai dan server berada. Seringkali mesin yang terdeteksi ternyata tersedia untuk dibaca, lebih jarang untuk menulis, berbagai sumber daya jaringan (disk, printer, direktori). Melalui sesi anonim, melalui IPC $ dan pengguna "Guest", dimungkinkan untuk mentransfer sumber daya pada mesin, kadang-kadang ada anggota "Administrator" tanpa kata sandi, dan kadang-kadang, setelah efek yang lebih "aktif" pada mesin yang terdeteksi, dimungkinkan untuk menemukan server yang menjalankan Windows NT 4.0 atau Windows 2000 Server. Jika beruntung berkenan menemukan mesin dengan Windows 98 yang kemudian menyebar, maka menjadi lebih mudah - pada masa itu OS yang ditentukan mengandung banyak kerentanan berbeda, termasuk implementasi bekerja dengan SMB, bruteforce untuk akses ke sumber daya dilakukan dalam hitungan menit bahkan pada dial-up koneksi. Bagi mereka yang ingin terjun ke masa lalu, ada tertulis secara rinci tentang "akses" ke Windows 9x - Hacking Exposed: Rahasia & Solusi Keamanan Jaringan. Bab 4: Meretas Windows 95/98 dan Saya . Tetapi sisa artikel ini bukan tentang itu.


Saya tidak akan pernah berpikir bahwa pada tahun 2019, "hiburan" semacam itu mungkin terjadi. Kesamaannya terletak pada kemudahan menemukan sumber daya orang lain yang tersedia untuk semua orang yang ingin tahu. Lebih lanjut, kami akan fokus bukan pada tren yang populer dalam 2 tahun terakhir - pencarian untuk database MongoDB atau Elasticsearch terbuka untuk akses - tetapi pada layanan yang sedikit lebih sederhana.


Lebih lanjut, saya mengusulkan untuk tidak mengevaluasi seluruh prosedur, norma etika mereka, saya perhatikan bahwa posting ini bukan seruan untuk tindakan yang dapat dikaitkan dengan beberapa artikel KUHP Federasi Rusia atau norma serupa dari undang-undang negara lain.


Sistem File Jaringan (NFS)


Network File System (NFS) - protokol untuk akses jaringan ke sistem file, memungkinkan Anda untuk menghubungkan (me-mount) sistem file jarak jauh melalui jaringan, memberikan pengguna akses ke file, memungkinkan Anda untuk bekerja dengan file-file ini dengan cara yang sama seperti dengan yang lokal.


Sebagian besar penyimpanan yang terhubung dengan Jaringan (NAS) tersedia di pasar, tentu saja, mendukung NFS, dan menyediakan akses ke sumber daya lokal serta pada server mana pun dengan sistem operasi yang memungkinkan untuk menggunakan layanan NFS.


Pengaturan untuk mengakses sumber daya server dari OS Ubuntu dan alamat IP 192.168.1.1 terdapat dalam file / etc / ekspor dan merupakan entri formulir:


  • / data / place1 192.168.1.0/255.255.255.0(rw,no_subtree_check,nohide,async) 192.168.101.0/255.255.255.0(rw ,no_subtree_check,nohide, async)
  • data / place2 192.168.1.0/255.255.255.0(rw,no_subtree_check,nohide, async) 192.168.101.0/255.255.255.0(rw ,no_subtree_check,nohide, async)

Dalam hal ini, akses NFS ke server dan sumber dayanya / data / place1 dimungkinkan untuk klien dengan alamat IP dari jaringan 192.168.1.0/255.255.255.0, 192.168.101.0/255.255.255.0.


Pasang sumber daya jarak jauh di direktori lokal, misalnya, / home / user / example, jika klien menggunakan subnet yang diizinkan, dan klien untuk NFS diinstal, dimungkinkan melalui perintah (Ubuntu):
mount -t nfs 192.168.1.1:/data/place1 /home/user/example


Jika alih-alih alamat IP * atau (semua orang) diindikasikan, maka seringkali, klien mana pun dapat memasang sumber daya jarak jauh ke dalam sistemnya.


Pengguna (misalnya, di bawah Ubuntu) hanya perlu mengetik di terminal: showmount -e ip-target dan mendapatkan informasi tentang sumber daya yang tersedia di server (daftar ekspor server).


Sebagai contoh:
showmount -e 81.24..
Export list for 81.24..:
/home/admin 192.168.52.1/24


Dengan demikian, skenario berikut ini terbentuk: untuk mendeteksi server yang menjalankan NFS, menentukan sumber daya yang tersedia di server, mengkonsolidasikan hasil menjadi bentuk output tunggal, dan kemudian melanjutkan sesuai dengan situasi.


Apa yang bisa di sumber daya - jelas, apa pun:


  • file pribadi pengguna Internet, misalnya, dalam kasus perangkat NAS "terbuka";
  • direktori dengan file seluruh perusahaan, database, arsip basis data;
  • sering direktori dengan alamat / home / * (kadang-kadang dengan kunci .ssh dan dapat ditulis);
  • direktori dengan file sistem pengawasan video;
  • lainnya ...

Mendapatkan Alamat IP


Berkenaan dengan penemuan server dengan NFS di Internet global, ada 2 cara: secara mandiri, menggunakan berbagai alat, dan hasil pemindaian, database, dan layanan pihak ketiga yang sudah jadi. Bahkan, semuanya bermula untuk mendapatkan daftar alamat IP. Di jaringan lokal, saya pikir pilihannya jelas - bertindak secara independen.


Port TCP terbuka 111, 2049 dapat berfungsi sebagai bukti fungsi layanan NFS.
Untuk secara independen mendapatkan daftar alamat IP server, cukup untuk memindai kisaran alamat atau seluruh subnet untuk mengetahui keberadaan port terbuka yang ditunjukkan. Alat apa pun cocok untuk ini: nmap, masscan, dan sebagainya.


Misalnya, dengan perintah masscan -p111,2049 200.26.1XX.0/24 β€”rate=10000 jaringan 200.26.1XX.0 / 24 akan dipindai selama beberapa detik untuk port terbuka 111, 2049:
Scanning 256 hosts [2 ports/host]
Discovered open port 2049/tcp on 200.26.1XX.28
Discovered open port 111/tcp on 200.26.1XX.15
Discovered open port 111/tcp on 200.26.1XX.20
Discovered open port 111/tcp on 200.26.1XX.28
Lebih jauh ke masing-masing alamat IP yang terdeteksi, dimungkinkan untuk menerapkan perintah:
showmount --no-headers -e 200.26.1XX.28
Hasil:
/usr/common *
Jelas, Anda dapat memindai jutaan alamat IP ruang Internet sendiri, tetapi ini bukan cara tercepat, dan kemudian layanan Shodan yang luar biasa dapat menjadi solusi untuk sub-tugas, tentu saja ada yang lain, tetapi yang ini dengan sintaks dan API yang sangat nyaman. Untuk mempelajari deskripsi kemampuan layanan bukan tujuan dari artikel tersebut. Secara singkat - layanan ini menyediakan pencarian lanjutan untuk perangkat yang terhubung ke Internet. Kriteria pencarian dapat berupa pengidentifikasi jaringan dan metadata lainnya: nomor seri sertifikat dan sejenisnya. Shodan memiliki banyak fitur untuk pencarian bertarget, tetapi saya tidak menemukan pencarian terpisah di NFS, seperti, misalnya, ada kriteria produk dengan nama produk: mongodb, elastic atau apache. Oleh karena itu, melalui Web NFS dimungkinkan untuk mencari pertanyaan berikut: nfs, tcp 2049, tcp 111, Portmap: 2049 dan seterusnya, sesuka Anda.



Atau instal klien Shodan (CLI), inisialisasi API KUNCI Anda ke layanan dan aktifkan pencarian dari baris perintah, misalnya:


  1. pencarian shodan - bidang ip_str, port Portmap: 2049
  2. pencarian shodan --field ip_str, port --separator, nfs
    Hasil:
    139.196.154.23.111,
    198.27.116.37.111,
    95.211.192.96.111,
    80.23.66.122.111,
    210.116.82.97.111,
    192.198.82.3.111,
    165.227.67.242.111,
    116.12.48.9.111,
    85.34.250.102.111,
    182.75.249.197.111,
    192.151.212.175.111,
    119.216.107.127.111,
    217.59.68.2111,
    178.159.12.97.111,
    ...

Jadi, cara mendapatkan daftar alamat IP perangkat dengan layanan NFS yang valid bisa dimengerti.


Ambil informasi tentang sumber daya NFS yang tersedia di server tertentu.


Ada banyak cara untuk menyelesaikan masalah ini secara massal: menulis skrip bash, mengatur saluran yang rumit dari rangkaian perintah dengan panggilan ke showmount, dan opsi lain - yang suka apa.


Dalam penelitian saya, saya memecahkan masalah ini dengan Python, dan dengan dua cara berbeda. Yang pertama terhubung melalui ssh ke server Ubuntu pribadi Anda dengan klien NFS dan kemudian memanggil perintah showmount di atasnya dengan kumpulan alamat IP yang diinginkan. Solusi kedua adalah dalam Python murni.


Saya kira sebuah pertanyaan mungkin muncul: mengapa begitu sulit, mengapa dengan Python?


Karena, seperti pada artikel saya sebelumnya tentang Habr, saya akan menggunakan alat Lampyre, yang pada 26 Februari mereka menerbitkan API yang memungkinkan Anda untuk menulis modul Anda ke platform dengan Python.


Lampyre

Secara singkat tentang Lampyre - platform perangkat lunak untuk OSINT dan analisis data dengan klien "tebal" untuk Windows, analog dari alat yang terkenal dan populer untuk tujuan yang sama - Maltego. Seperti di Maltego, Lampyre "out of the box" menyediakan serangkaian permintaan untuk berbagai layanan. Kueri secara konseptual setara dengan transformasi dari produk yang lebih dikenal. Jika ada sesuatu yang hilang, sekarang Anda dapat menulis permintaan Anda sendiri. Permintaan yang disertakan dengan Lampyre dieksekusi pada infrastruktur platform, ditulis secara independen - di mesin. Artinya, pengguna harus menginstal Python dan semua pustaka yang diperlukan digunakan dalam kode.


Saya memutuskan untuk menguji kemampuan API. Poin kuncinya adalah bahwa Lampyre sudah memiliki beberapa "permintaan" untuk Shodan, terutama karena pengguna tidak perlu memiliki API KUNCI mereka sendiri dari layanan. Dengan demikian, dengan satu permintaan, Anda bisa mendapatkan daftar alamat IP dengan layanan NFS dimunculkan, dan dengan permintaan kedua, modul yang saya tulis akan memeriksa sumber daya yang tersedia dan memvisualisasikan hasilnya dengan karakteristik sumber daya pada grafik yang sama.


Dan di sini Korea


Selama pencarian dari Shodan dan pengujian modul, menjadi menarik untuk melihat situasi dengan kualitas dan kuantitas hasil pemindaian oleh layanan Shodan di negara-negara Asia, bagaimana semuanya dengan sumber daya yang tidak aman. Pilihannya jatuh pada Republik Korea, saya pikir tidak perlu mengatakan bahwa Korea Selatan adalah negara yang sangat maju secara teknologi, dan saya menyarankan agar Anda dapat menemukan sesuatu yang menarik dalam jaringannya.


Cari berdasarkan Shodan, dalam Permintaan: nfs , dalam Negara: Republik Korea kode, kr



Hasilnya tidak lama datang (pada gambar di bawah, hanya bagian dari skema umum).



Daftar Host:


  • psi.kaist.ac.kr
  • hulk.kaist.ac.kr
  • messi.kaist.ac.kr
  • marvel.kaist.ac.kr
  • kaist.ac.kr
  • ai1.kaist.ac.kr
  • jarvis3.kaist.ac.kr
  • baraddur.kaist.ac.kr
  • rho.kaist.ac.kr
  • jarvis.kaist.ac.kr

Semua dari mereka, seperti dapat dilihat baik dalam grafik dan dalam nama-nama, terdaftar sebagai AS1781 - Korea Advanced Institute of Science and Technology



Korea Advanced Technology Institute - universitas akademik dan penelitian Korea Selatan terkemuka yang berlokasi di Daejeon, berada di peringkat kedua peringkat nasional di Korea Selatan. Universitas ini secara konsisten termasuk dalam 5% dari institusi pendidikan terbaik di Korea Selatan.


Kami menggunakan alamat IP yang ditentukan sebagai argumen input ke modul tertulis "Jelajahi: NFS (SSH)" dan sebagai hasilnya:



Saya dengan cepat membuat skema untuk menampilkan hasil tabel dalam grafik (tentang skema dan prinsip untuk membuat grafik nanti dalam artikel).



Hasil menggabungkan dengan skema Shodan



Saat menganalisis simpul dan hubungan grafik, menjadi jelas pada alamat apa / sumber daya rumah tersedia, dapat diakses oleh semua orang (*).


Untuk persepsi visual yang lebih baik, ubah properti objek grafik dan pengaturan diagram lainnya:



Tentu saja, saya bergantian memasang bagian dari sumber daya di salah satu server saya dan mulai belajar. Ternyata hampir sama di mana-mana - direktori pengguna: asm, hoo, hyshin, jay, jiwee110, jokangjin, kmh603, ksm782, lee, linus, hilang + ditemukan, marvel_guest, pie, qwe, scloud, seokmin, sgim, thrreak, yoosj, ysha, zinnia7.


Hampir semua direktori dengan file dibaca dan ditulis. Beberapa pengguna di .ssh memiliki file otor_keys dengan akses tulis kepada mereka.


Saya membuat kunci saya, menyalinnya ke otor_keys dari salah satu pengguna dan terhubung ke server melalui ssh pada port 2222, saya menerima nomor port dari data dari Shodan.


Pengguna, pengaturan jaringan:



Host di jaringan:



File / etc / ekspor dan drive:



File / etc / fstab dan OS:



Saya percaya bahwa ini adalah jaringan dari beberapa departemen untuk mahasiswa pascasarjana atau mahasiswa, dan mereka melakukan semacam perhitungan di server, karena ada banyak sumber Python yang berbeda, sesuatu yang berkaitan dengan GPU dan distribusi Anaconda, dan sebagainya. Saya tidak mempelajari segalanya dan mulai berpikir apa yang harus dilakukan dengan semua ini, tentu saja, saya bisa "berjalan" untuk sebagian besar simpul (mungkin saya bisa memikirkan sesuatu yang lebih eksotis) , tetapi itu tidak menyebabkan banyak minat kepada saya. Dan saya memikirkan hal berikut: karena institut ini ilmiah dan maju, harus ada bidang keamanan informasi. Bahkan seluruh lab: Lab Keamanan Perangkat Lunak dan kepalanya, Sang Kil Cha
Saya memutuskan untuk menulis surat kepadanya, dan mereka berkata, memungkinkan semua orang di Internet untuk menghubungkan sumber daya NFS dengan izin baca dan tulis sangat berbahaya, tampaknya Anda perlu memperbaiki sesuatu, melampirkan tangkapan layar, dan mengirim.


Huruf 1
Sang Kil Cha yang terhormat,
Saya menulis surat kepada Anda, seperti pada situs web kaist.ac.kr Anda disebut sebagai SoftSec Lab terkemuka di KAIST, dan saya percaya masalah berikut ini menjadi perhatian Anda.
Selama penelitian kami di bidang keamanan informasi, secara tidak sengaja dan kebetulan server berikut terdeteksi:
143.248.247.131 - psi.kaist.ac.kr
143.248.247.4 - jarvis3.kaist.ac.kr
143.248.247.169
143.248.247.223
143.248.247.235
143.248.247.251 - marvel.kaist.ac.kr
143.248.247.239 - jarvis.kaist.ac.kr
143.248.247.194 - hulk.kaist.ac.kr
143.248.2.23
Semua server ini memiliki layanan NFS (Network File System) dan berjalan.
Tingkat keamanan akses ke server ini sangat rendah.
Direktori rumah dari server-server ini dengan semua kontennya dapat diakses oleh siapa saja yang menggunakan Internet.
Misalnya, pengaturan nfs - / etc / ekspor 143.248.247.251 -> / home atau untuk 143.248.247.239
showmount -e 143.248.247.239
Daftar ekspor untuk 143.248.247.239:
/ data
/ home / appl
Direktori pengguna dari sebagian besar server dapat diakses untuk membaca dan menulis, termasuk sub direktori mereka, yang berisi kunci akses ssh publik dan pribadi.
Mengedit file memungkinkan menambahkan kunci akses baru dan mendapatkan akses ssh jarak jauh ke server dan kemudian - ke beberapa subnet KAIST dalam.
Hanya untuk menguji akses dangkal tersebut diperoleh, tidak ada modifikasi yang dibuat, tidak ada data yang diedit, disalin atau dihapus, tidak ada kerusakan yang dilakukan pada infrastruktur.
Silakan lihat file terlampir untuk semacam pengakuan dan bukti.
Saya tidak memiliki persyaratan atau klaim, tetapi saya merekomendasikan untuk meningkatkan tingkat keamanan jaringan Anda secara signifikan.

Segera mereka menjawab saya, terjemahan gratis: terima kasih, kami akan meneruskan kepada siapa pun.


Jawaban 1
Terima kasih telah memberi tahu saya! Saya akan meneruskan email ini kepada seseorang yang bertanggung jawab atas jaringan dan keamanan kami. Terbaik, Sang Kil

Sebelum menerbitkan artikel ini, saya memutuskan untuk memeriksa, melihat apa yang telah berubah:



Memang, akses ke sumber daya hanya diizinkan dari mesin di jaringan internal, tetapi bagaimana dengan server 143.248.247.251. Menurut entri dalam tabel, sumber daya host di pengaturan NFS tetap *. Saya membuat sketsa versi lain dari "pemetaan" tabel ke dalam grafik:



Apa saja perubahan dalam "pemetaan": Objek NFS sekarang "tetap bersatu" dengan 2 atribut identik - jalur IP dan NFS. Objek Status dibuat hanya ketika atribut nilai, yang berisi konten dari kolom catatan mentah, berisi nilai " * "
Dan grafik di atas meja muncul dalam bentuk baru:



Sekarang, omong-omong, pengalamatan jaringan internal telah menjadi jelas terlihat, dan pada server 143.248.247.251 juga dimungkinkan untuk mengedit isi direktori pengguna, file; pada prinsipnya, kemungkinan tetap sama seperti sebelumnya.


Jadi saya menulis surat kedua kepada Bpk. Sang Kil Cha, dengan konten pertama yang serupa, mencatat bahwa beberapa acara akan disajikan dalam sebuah artikel di sumber daya habr.com yang populer:


Huruf 2
Dear Sang Kil Cha, hari baik untukmu.
Saya memutuskan untuk melihat apakah ada yang berubah setelah email saya kepada Anda dan memang, pengaturan akses telah diubah. Namun ternyata para insinyur keamanan meninggalkan alamat ip 143.248.247.251 dan pengaturannya tetap sama. Harap amankan ip ini juga sehingga tidak ada orang asing yang dapat mengaksesnya.
Saya sedang menulis artikel tentang Keamanan Informasi dan saya akan mempostingnya di https://habr.com . Ini adalah situs web yang sangat populer di Rusia. Artikel ini akan mencakup beberapa bagian tentang kualitas rendah pengaturan akses NFS dengan beberapa contoh kasus dengan server Anda. Saya akan mengirimkan Anda tautan ke artikel saya ketika itu diposkan.

Cara menggunakan Lampyre API dan menulis modul Anda


Modul ini akan diminta untuk menerima daftar alamat IP atau daftar subnet dalam bentuk 192.168.0 / 24 sebagai input - pada tahap ini, akan diperlukan untuk memvalidasi data input tentang keterlibatan string dalam alamat IP secara independen dalam kode, dalam kasus subnet - dikonversi ke daftar IP.


Langkah selanjutnya, melalui perpustakaan Python paramiko , akan diakses ke server ssh pribadi dan berurutan (ada upaya untuk menyinkronkan dalam kode konsep modul) perintah ini disebut:
timeout {timeouts} showmount --no-headers -e {ip}
Output dari hasil akan diuraikan melalui kode Python ke dalam struktur output, table: daftar kamus dalam Python.
Kunci dalam kamus:


  • current_day - tanggal permintaan pengguna
  • host_query - IP yang informasinya diterima
  • shared_path - sumber daya NFS
  • status_ip - informasi tentang akses ke sumber daya, jika alamat IP terdaftar melalui ",", maka string kamus digandakan dalam daftar.

Selanjutnya, sesuai dengan konsep konsep, upaya primitif dilakukan untuk mem-parsing nilai kunci status_ip ke dalam subjek: alamat IP, catatan host, nilai-nilai "*" atau "semua orang"


Menurut dokumentasi API dan penjelasan dari dukungan Lampyre.io - setiap modul harus mengembalikan data ke tabel, satu atau lebih, tetapi tabel tersebut harus dideskripsikan sebagai bagian dari API (Header tugas, header tabel). Sebenarnya, ini adalah hasil utama dari modul.
Dengan demikian, hasil akhir, dengan mempertimbangkan kunci kamus, akan berupa tabel:


 class NFSHeader(metaclass=Header): display_name = 'Search data from NFS services' current_day = Field('Date', ValueType.Datetime) host_query = Field('Search ip', ValueType.String) shared_path = Field('NFS path', ValueType.String) ip = Field('ip address', ValueType.String) network = Field('network address', ValueType.String) host = Field('host', ValueType.String) status = Field('raw record', ValueType.String) 

Nilai (sedikit dimodifikasi) dari analisis hasil perintah showmount di server akan ditulis ke tabel. Nama-nama bidang di kelas berbicara sendiri, di kolom catatan mentah, informasi tentang akses ke sumber daya akan disimpan. Dalam arti, analisis data pada sumber daya NFS ini juga dapat dianggap sebagai OSINT, informasi tentang kemungkinan akses dari berbagai alamat IP memberikan beberapa gagasan tentang pemilik sumber daya atau pengalamatan dalam jaringan sumber daya. Misalnya, alamat IP server dengan NFS terletak di Ukraina, dan alamat IP yang diizinkan untuk mengaksesnya adalah di Jerman:



Dan jika Anda memperluas studi contoh ini, maka segera ada konfirmasi koneksi server tidak hanya melalui NFS, tetapi juga melalui satu sertifikat di alamat: 77.120.103.9, 138.201.202.135 dan domain * .aniart.com.ua:



Cara mentransfer data ke modul dan menulis ke tabel:
Buat kelas SearchDataNFS Anda sendiri dari kelas Tugas:


 class SearchDataNFS(Task) 

Dalam metode get_id , get_id mengembalikan UUID acak unik:


 def get_id(self): return 'bf51fd57-3fec-4416-9d07-905935a484b4' 

Dalam metode get_display_name tentukan bagaimana Tugas akan dipanggil, dan dalam metode get_description , sesuai dengan namanya, deskripsi Tugas:


 def get_display_name(self): return 'Explore: NFS(SSH)' def get_description(self): return 'Explore NFS resourses' 

Dalam metode get_headers tentukan tabel mana yang akan kita gunakan:


 def get_headers(self): return NFSHeader 

Metode get_enter_params akan menentukan tampilan jendela input. Dari kode jelas bahwa daftar string diberikan ke input, yang nantinya akan dikonversi menjadi alamat IP secara mandiri:


 def get_enter_params(self): ep_coll = EnterParamCollection() ep_coll.add_enter_param('ips', 'IP', ValueType.String, is_array=True, value_sources=[Attributes.System.IPAddress], description='IPs, networks') return ep_coll 

Dalam metode eksekusi , eksekusi tugas utama terjadi:


 ips = [] for input_ip in set(map(lambda z: z.strip(), enter_params.ips)): ips.extend(reparse_ip_hosts(input_ip)) 

Parameter input diakses melalui enter_params.ips. Dalam metode reparse_ip_hosts , validasi string yang diimplementasikan sendiri ke alamat IP terjadi.


 targets = ((ip, port) for ip in ips for port in ports) lines = thread_async_nfs_one_client(targets) info = reparse_result_rows(lines) fields_table = NFSHeader.get_fields() for data_id in info: tmp = NFSHeader.create_empty() for field in fields_table: if field in data_id: tmp[fields_table[field]] = data_id[field] result_writer.write_line(tmp, header_class=NFSHeader) 

Fungsi thread_async_nfs_one_client terhubung ke server dengan ssh (alamat IP, nama pengguna dan kata sandi diatur oleh hardcode) dan showmount dieksekusi, seperti yang sebelumnya ditunjukkan, hasilnya diurai, lalu diubah lagi dalam fungsi reparse_result_rows . Penting untuk dicatat bahwa info adalah daftar yang terdiri dari kamus, di setiap kamus kunci diberi nama sebagai bidang kelas NFSHeader. Artinya, kamusnya terlihat seperti ini:


 { 'current_day': datetime.datetime(2019, 3, 6, 16, 48, 17), 'host_query': '192.168.1.1', 'shared_path': '/volume1/workspace', 'ip': '192.168.10.10', 'network': '', 'host': '', 'status': '192.168.10.10' } 

Penting untuk mengamati tipe data dalam kamus, mereka harus sama dengan dalam deskripsi tabel.
Lebih lanjut dalam loop, iterasi melalui elemen daftar dan menulisnya melalui metode API ( result_writer.write_line ) ke tabel NFSHeader tertentu terjadi.
Untuk deskripsi yang lebih rinci, Anda harus membaca dokumentasi.
Pada dasarnya, modul siap ditambahkan ke Lampyre.


Menggunakan modul Anda di Lampyre


Karena fakta bahwa ssh digunakan dan pelaksanaan perintah showmount, tentu saja, Anda harus memiliki akses ke server Anda melalui ssh. Untuk pengujian saya, peran ini dimainkan oleh mesin virtual di Virtualbox dengan Ubuntu dan klien NFS diinstal di dalamnya.


Untuk bekerja dengan modul asli pada mesin pengguna, Python 3.6 diperlukan, path ke interpreter harus dalam variabel sistem, atau path ke itu harus ditentukan dalam file Lampyre\config\appSettings.config . Secara default, kunci pythonPath dikomentari dalam pengaturan.


Memuat modul ke Lampyre dilakukan dalam langkah-langkah berikut:


  1. Di jendela Script, muat file Lampyre \ user_tasks \ ontology.py (dilengkapi dengan aplikasi)
  2. Di jendela yang sama, muat modul Anda, dalam hal ini nfs_via_ssh.py. Jika terjadi kesalahan, tombol Detail akan membantu
  3. Setelah memuat, di jendela Daftar permintaan pada tab Tugas , bagian Tugas lokal akan muncul (dalam kode modul Anda bisa menyebutnya berbeda), ia memiliki nama Jelajahi: NFS (SSH) :


    Jendela Daftar permintaan yang diperbarui:

  4. Alamat IP server dengan NFS, seperti yang saya katakan sebelumnya, paling baik diperoleh dengan terlebih dahulu menjalankan kueri pencarian Shodan dengan parameter Query: tcp 2049 (Anda dapat menentukan nfs ). Parameter halaman atau rentang , ditetapkan secara default ke 1, berarti 1 halaman jawaban dari layanan Shodan akan dikembalikan, pada halaman biasanya ada 100 hasil (baris).
    Hasil dari eksekusi Shodan:

  5. Salin alamat IP dari tabel atau dari diagram ke clipboard dan rekatkan ke jendela modul IP Explore: NFS (SSH). Jalankan dan harapkan hasilnya:


Tentu saja, Anda harus memperhitungkan bandwidth dari server Anda sendiri dan asing, dan batas waktu, yang ditetapkan secara kaku dalam kode modul.


Hasilnya diperoleh dalam bentuk tabel, tetapi Anda dapat melanjutkan dan menggabungkan hasil tabel dengan grafik hasil dari pelaksanaan pencarian Shodan. Pada awalnya akan agak sulit untuk dipahami.


Visualisasi tabel dengan hasilnya


Mari kita mulai. Ada tabel dengan seperangkat kolom dengan nilai dari eksekusi modul pengguna. Tetapi jika Anda memperhatikan tombol Skema pada jendela Permintaan - ini tidak aktif. Karena pemetaan tabel ke grafik tidak diatur, dan itu harus diatur.


Skema 1 (bukan yang terbaik)
Dengan tabel terbuka dari hasil modul, di sudut kanan bawah ada elemen antarmuka "Tambahkan template pembuatan", dengan mengklik di mana jendela "Template pembuatan" muncul. Dalam hal ini, Anda dapat menentukan pemetaan baris tabel menjadi objek grafik, saya tidak akan menjelaskan proses secara rinci dalam artikel, tautan pada saluran platform di Youtube menunjukkan cara melakukan ini, dalam artikel ini saya akan membatasi diri pada gambar tentang apa yang harus terjadi:



Template untuk grafik:



Penting untuk dicatat bahwa IP, objek Domain berada di Lampyre, dan saya membuat objek NFS dan Jaringan. , «» . , , β€” «» β€” , β€” - , . , NFS – 2 , NFS path Status, β€” NFS path. β€” . «» β€” Schema .
:



:



«» β€” i2 (IBM i2 Analyst's Notebook) :



«» , : IP- IP- , , NFS , IP. ( ).


2



. β€” , IP- :



, , (csv) . , «» . «» , .


Shodan NFS Shodan search, add to active tab β€” :



:



Lampyre , ssh.


β€” , NFS .

Source: https://habr.com/ru/post/id444382/


All Articles