อัญมณี Ruby Async ที่ทันสมัยสำหรับ Shodan เครื่องมือค้นหาเครื่องแรกของโลกสำหรับอุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ต
$ gem install shodanz
require "shodanz"
client = Shodanz . client . new ( key : "YOUR_API_KEY" )หมายเหตุ คุณยังสามารถตั้งค่าตัวแปรสภาพแวดล้อม
SHODAN_API_KEYแทนการส่งรหัส API เป็นอาร์กิวเมนต์เมื่อสร้างไคลเอนต์
Shodanz ใช้ Async เพื่อจัดหา IO แบบอะซิงโครนัส สิ่งนี้ไม่ได้ทำลายสคริปต์ที่มีอยู่โดยใช้ shodanz แต่ตอนนี้มีความยืดหยุ่นมากขึ้นในการเขียนสิ่งที่ยอดเยี่ยมมากขึ้นเช่นนี้เครื่องตรวจจับ honeypot แบบอะซิงโครนัส:
หมายเหตุ ที่จะเรียกใช้วิธีการใด ๆ ของ Shodanz แบบอะซิงโครไนซ์เพียงแค่ห่อมันในบล็อก
Async { ... }หากต้องการรอการดำเนินการ async อื่น ๆ ไปยังฟินแลนด์ในบล็อกให้โทร.waitอยู่
ส่วนที่เหลือ API ให้วิธีการค้นหา shodan ค้นหาโฮสต์รับข้อมูลสรุปเกี่ยวกับการสืบค้นและวิธีการยูทิลิตี้ที่หลากหลายเพื่อให้การพัฒนาง่ายขึ้น อ้างถึงเอกสาร REST API สำหรับแนวคิดเพิ่มเติมเกี่ยวกับวิธีการใช้งาน
ค้นหาสิ่งต่าง ๆ ใช่ไหม?
ส่งคืนบริการทั้งหมดที่พบในโฮสต์ IP ที่กำหนด
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. ค้นหา shodan โดยใช้ไวยากรณ์แบบสอบถามเดียวกันกับเว็บไซต์และใช้ facets เพื่อรับข้อมูลสรุปสำหรับคุณสมบัติที่แตกต่างกัน
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" } ) วิธีนี้จะทำงานเหมือน host_search ด้วยความแตกต่างเพียงอย่างเดียวที่วิธีนี้ไม่ส่งคืนผลลัพธ์โฮสต์ใด ๆ มันจะส่งคืนจำนวนผลลัพธ์ทั้งหมดที่ตรงกับการสืบค้นและข้อมูลด้านใด ๆ ที่ร้องขอ เป็นผลให้วิธีนี้ไม่ได้ใช้เครดิตแบบสอบถาม
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 } ) ใช้วิธีนี้เพื่อขอ Shodan เพื่อรวบรวมข้อมูล IP หรือ NetBlock
client . scan ( "8.8.8.8" ) ใช้วิธีนี้เพื่อขอ Shodan เพื่อรวบรวมข้อมูลอินเทอร์เน็ตสำหรับพอร์ตเฉพาะ
วิธีนี้ จำกัด เฉพาะนักวิจัยด้านความปลอดภัยและ บริษัท ที่มีใบอนุญาตข้อมูล Shodan หากต้องการสมัครเพื่อเข้าถึงวิธีนี้ในฐานะนักวิจัยโปรดส่งอีเมลถึง [email protected] พร้อมข้อมูลเกี่ยวกับโครงการของคุณ การเข้าถึงถูก จำกัด เพื่อป้องกันการละเมิด
client . crawl_for ( port : 80 , protocol : "http" ) ใช้วิธีนี้เพื่อรับรายการคำค้นหาการค้นหาที่ผู้ใช้บันทึกไว้ใน 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" ) ใช้วิธีนี้เพื่อค้นหาไดเรกทอรีของคำค้นหาที่ผู้ใช้บันทึกไว้ใน Shodan
client . search_for_community_query ( "the best" )
client . search_for_community_query ( "the best" , page : 2 ) ใช้วิธีนี้เพื่อรับรายการแท็กยอดนิยมสำหรับคำค้นหาการค้นหาที่บันทึกไว้ใน Shodan
client . popular_query_tags
client . popular_query_tags ( 20 ) วิธีนี้ส่งคืนวัตถุที่มีโปรโตคอลทั้งหมดที่สามารถใช้งานได้เมื่อเปิดการสแกนอินเทอร์เน็ต
client . protocols วิธีนี้ส่งคืนรายการหมายเลขพอร์ตที่ตัวรวบรวมข้อมูลของ Shodan กำลังมองหา
client . ports ส่งคืนข้อมูลเกี่ยวกับบัญชี Shodan ที่เชื่อมโยงกับคีย์ API นี้
client . profile ค้นหาที่อยู่ IP สำหรับรายการชื่อโฮสต์ที่ให้ไว้
client . resolve ( "google.com" )
client . resolve ( "google.com" , "bing.com" ) ค้นหาชื่อโฮสต์ที่กำหนดไว้สำหรับรายการที่อยู่ IP ที่กำหนด
client . reverse_lookup ( "74.125.227.230" )
client . reverse_lookup ( "74.125.227.230" , "204.79.197.200" ) แสดงส่วนหัว HTTP ที่ลูกค้าของคุณส่งเมื่อเชื่อมต่อกับเว็บเซิร์ฟเวอร์
client . http_headers รับที่อยู่ IP ปัจจุบันของคุณตามที่เห็นจากอินเทอร์เน็ต
client . my_ip คำนวณคะแนนความน่าจะเป็นฮันนีพ็อตตั้งแต่ 0 (ไม่ใช่ฮันนี่พ็อต) ถึง 1.0 (เป็นฮันนีพ็อต)
client . honeypot_score ( '8.8.8.8' ) client . infoสตรีมมิ่ง API เป็นบริการที่ใช้ HTTP ที่ส่งคืนข้อมูลแบบเรียลไทม์ของข้อมูลที่รวบรวมโดย Shodan อ้างถึงเอกสารการสตรีม API สำหรับแนวคิดเพิ่มเติมเกี่ยวกับวิธีการใช้งาน
สตรีมนี้ให้ข้อมูลทั้งหมดที่ Shodan รวบรวม ใช้สตรีมนี้หากคุณต้องการเข้าถึงทุกสิ่งและ/ หรือต้องการจัดเก็บฐานข้อมูล Shodan ของคุณเองในเครื่อง หากคุณสนใจเฉพาะพอร์ตเฉพาะโปรดใช้สตรีมพอร์ต
client . banners do | data |
# do something with banner data
puts data
end สตรีมนี้ให้มุมมองการประหยัดแบนด์วิดธ์ของสตรีมแบนเนอร์ในกรณีที่คุณสนใจเฉพาะอุปกรณ์ที่อยู่ใน ASNs บางชนิดเท่านั้น
client . banners_within_asns ( 3303 , 32475 ) do | data |
# do something with banner data
puts data
end สตรีมนี้ให้มุมมองการประหยัดแบนด์วิดธ์ของสตรีมแบนเนอร์ในกรณีที่คุณสนใจเฉพาะอุปกรณ์ที่อยู่ในบางประเทศ
client . banners_within_countries ( "DE" , "US" , "JP" ) do | data |
# do something with banner data
puts data
end ส่งคืนข้อมูลแบนเนอร์สำหรับรายการพอร์ตที่ระบุเท่านั้น สตรีมนี้ให้มุมมองการประหยัดแบนด์วิดท์ของสตรีมแบนเนอร์ในกรณีที่คุณสนใจเฉพาะรายการพอร์ตเฉพาะเท่านั้น
client . banners_on_ports ( 21 , 22 , 80 ) do | data |
# do something with banner data
puts data
end สมัครสมาชิกกับแบนเนอร์ที่ค้นพบในทุกช่วง IP ที่อธิบายไว้ในการแจ้งเตือนเครือข่าย
client . alerts do | data |
# do something with banner data
puts data
end สมัครสมาชิกกับแบนเนอร์ที่ค้นพบในช่วง IP ที่กำหนดไว้ในการแจ้งเตือนเครือข่ายเฉพาะ
client . alert ( "HKVGAIRWD79Z7W2T" ) do | data |
# do something with banner data
puts data
endExploits API ให้การเข้าถึงแหล่งข้อมูลการหาประโยชน์/ ช่องโหว่หลายอย่าง อ้างถึงเอกสาร API Exploits สำหรับแนวคิดเพิ่มเติมเกี่ยวกับวิธีการใช้งาน
ค้นหาแหล่งข้อมูลที่หลากหลายสำหรับการหาประโยชน์และใช้แง่มุมเพื่อรับข้อมูลสรุป
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. วิธีนี้จะทำงานเหมือนกันกับวิธี search API ที่ใช้ประโยชน์จากความแตกต่างที่ไม่ส่งคืนผลลัพธ์ใด ๆ
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. อัญมณีมีให้เป็นโอเพ่นซอร์สภายใต้ข้อกำหนดของใบอนุญาต MIT