Permata ruby modern, async untuk Shodan, mesin pencari pertama di dunia untuk perangkat yang terhubung dengan internet.
$ gem install shodanz
require "shodanz"
client = Shodanz . client . new ( key : "YOUR_API_KEY" )Catatan Anda juga dapat mengatur variabel lingkungan
SHODAN_API_KEYalih -alih melewati kunci API sebagai argumen saat membuat klien.
Shodanz menggunakan async untuk menyediakan IO yang tidak sinkron. Ini tidak merusak skrip yang ada menggunakan Shodanz, tetapi sekarang menawarkan lebih banyak fleksibilitas untuk menulis lebih banyak hal yang luar biasa, seperti ini detektor honeypot yang asyncronous:
Catatan untuk menjalankan metode Shodanz apa pun secara asinkron, cukup bungkus di blok
Async { ... }. Untuk menunggu operasi async lainnya ke Finlandia di blok, hubungi.waitTunggu.
REST API menyediakan metode untuk mencari Shodan, mencari host, mendapatkan informasi ringkasan tentang pertanyaan dan berbagai metode utilitas untuk membuat pengembangan lebih mudah. Lihat dokumentasi API REST untuk lebih banyak ide tentang cara menggunakannya.
Cari barang, apakah Anda?
Mengembalikan semua layanan yang telah ditemukan di IP host yang diberikan.
client . host ( "8.8.8.8" ) # Default
client . host ( "8.8.8.8" , history : true ) # All historical banners should be returned.
client . host ( "8.8.8.8" , minify : true ) # Only return the list of ports and the general host information, no banners. Cari Shodan menggunakan sintaks kueri yang sama dengan situs web dan gunakan segi untuk mendapatkan informasi ringkasan untuk properti yang berbeda.
client . host_search ( "mongodb" )
client . host_search ( "nginx" )
client . host_search ( "apache" , after : "1/12/16" )
client . host_search ( "ssh" , port : 22 , page : 1 )
client . host_search ( "ssh" , port : 22 , page : 2 )
client . host_search ( "ftp" , port : 21 , facets : { link : "Ethernet or modem" } ) Metode ini berperilaku identik dengan host_search dengan satu -satunya perbedaan bahwa metode ini tidak mengembalikan hasil host apa pun, ia hanya mengembalikan jumlah total hasil yang cocok dengan kueri dan informasi facet apa pun yang diminta. Akibatnya metode ini tidak mengkonsumsi kredit kueri.
client . host_count ( "apache" )
client . host_count ( "apache" , country : "US" )
client . host_count ( "apache" , country : "US" , state : "MI" )
client . host_count ( "apache" , country : "US" , state : "MI" , city : "Detroit" )
client . host_count ( "nginx" , facets : { country : 5 } )
client . host_count ( "apache" , facets : { country : 5 } ) Gunakan metode ini untuk meminta Shodan merangkak IP atau NetBlock.
client . scan ( "8.8.8.8" ) Gunakan metode ini untuk meminta Shodan merangkak internet untuk port tertentu.
Metode ini terbatas pada peneliti keamanan dan perusahaan dengan lisensi data Shodan. Untuk mengajukan akses ke metode ini sebagai peneliti, silakan kirim email ke [email protected] dengan informasi tentang proyek Anda. Akses dibatasi untuk mencegah penyalahgunaan.
client . crawl_for ( port : 80 , protocol : "http" ) Gunakan metode ini untuk mendapatkan daftar pertanyaan pencarian yang disimpan pengguna di Shodan.
client . community_queries
client . community_queries ( page : 2 )
client . community_queries ( sort : "votes" )
client . community_queries ( sort : "votes" , page : 2 )
client . community_queries ( order : "asc" )
client . community_queries ( order : "desc" ) Gunakan metode ini untuk mencari direktori kueri pencarian yang telah disimpan pengguna di Shodan.
client . search_for_community_query ( "the best" )
client . search_for_community_query ( "the best" , page : 2 ) Gunakan metode ini untuk mendapatkan daftar tag populer untuk kueri pencarian yang disimpan di Shodan.
client . popular_query_tags
client . popular_query_tags ( 20 ) Metode ini mengembalikan objek yang berisi semua protokol yang dapat digunakan saat meluncurkan pemindaian internet.
client . protocols Metode ini mengembalikan daftar nomor port yang dicari oleh crawler Shodan.
client . ports Mengembalikan informasi tentang akun Shodan yang ditautkan ke kunci API ini.
client . profile Cari alamat IP untuk daftar nama host yang disediakan.
client . resolve ( "google.com" )
client . resolve ( "google.com" , "bing.com" ) Cari nama host yang telah ditentukan untuk daftar alamat IP yang diberikan.
client . reverse_lookup ( "74.125.227.230" )
client . reverse_lookup ( "74.125.227.230" , "204.79.197.200" ) Menampilkan header HTTP yang dikirim klien Anda saat menghubungkan ke server web.
client . http_headers Dapatkan alamat IP Anda saat ini seperti yang terlihat dari internet.
client . my_ip Menghitung skor probabilitas honeypot mulai dari 0 (bukan honeypot) hingga 1.0 (adalah honeypot).
client . honeypot_score ( '8.8.8.8' ) client . infoStreaming API adalah layanan berbasis HTTP yang mengembalikan aliran data waktu-nyata yang dikumpulkan oleh Shodan. Lihat dokumentasi API streaming untuk lebih banyak ide tentang cara menggunakannya.
Aliran ini menyediakan semua data yang dikumpulkan Shodan. Gunakan aliran ini jika Anda memerlukan akses ke semuanya dan/ atau ingin menyimpan database Shodan Anda sendiri secara lokal. Jika Anda hanya peduli dengan port tertentu, silakan gunakan aliran port.
client . banners do | data |
# do something with banner data
puts data
end Aliran ini memberikan tampilan aliran spanduk yang disaring dan menghemat bandwidth jika Anda hanya tertarik pada perangkat yang terletak di ASNS tertentu.
client . banners_within_asns ( 3303 , 32475 ) do | data |
# do something with banner data
puts data
end Aliran ini memberikan tampilan aliran spanduk yang disaring dan menghemat bandwidth jika Anda hanya tertarik pada perangkat yang berlokasi di negara-negara tertentu.
client . banners_within_countries ( "DE" , "US" , "JP" ) do | data |
# do something with banner data
puts data
end Hanya mengembalikan data spanduk untuk daftar port yang ditentukan. Aliran ini memberikan tampilan aliran spanduk yang disaring dan menghemat bandwidth jika Anda hanya tertarik pada daftar port tertentu.
client . banners_on_ports ( 21 , 22 , 80 ) do | data |
# do something with banner data
puts data
end Berlangganan spanduk yang ditemukan di semua rentang IP yang dijelaskan dalam peringatan jaringan.
client . alerts do | data |
# do something with banner data
puts data
end Berlangganan spanduk yang ditemukan pada rentang IP yang ditentukan dalam peringatan jaringan tertentu.
client . alert ( "HKVGAIRWD79Z7W2T" ) do | data |
# do something with banner data
puts data
endAPI Exploits menyediakan akses ke beberapa sumber data eksploitasi/ kerentanan. Lihat dokumentasi API Exploits untuk lebih banyak ide tentang cara menggunakannya.
Cari di berbagai sumber data untuk eksploitasi dan gunakan segi untuk mendapatkan informasi ringkasan.
client . exploits_api . search ( "python" ) # Search for python vulns.
client . exploits_api . search ( port : 22 ) # Port number for the affected service if the exploit is remote.
client . exploits_api . search ( type : "shellcode" ) # A category of exploit to search for.
client . exploits_api . search ( osvdb : "100007" ) # Open Source Vulnerability Database ID for the exploit. Metode ini berperilaku identik dengan metode search API Exploits dengan perbedaan yang tidak mengembalikan hasil apa pun.
client . exploits_api . count ( "python" ) # Count python vulns.
client . exploits_api . count ( port : 22 ) # Port number for the affected service if the exploit is remote.
client . exploits_api . count ( type : "shellcode" ) # A category of exploit to search for.
client . exploits_api . count ( osvdb : "100007" ) # Open Source Vulnerability Database ID for the exploit. Permata tersedia sebagai open source di bawah ketentuan lisensi MIT.