인터넷 연결 장치를위한 세계 최초의 검색 엔진 인 Shodan을위한 현대적인 비동기 루비 보석.
$ gem install shodanz
require "shodanz"
client = Shodanz . client . new ( key : "YOUR_API_KEY" )참고 클라이언트를 생성 할 때 API 키를 인수로 전달하는 대신
SHODAN_API_KEY환경 변수를 설정할 수도 있습니다.
Shodanz는 비동기 IO를 제공하기 위해 비동기를 사용합니다. 이것은 Shodanz를 사용하여 기존 스크립트를 깨뜨리지 않지만 이제는 비동기 허니 포트 탐지기와 같이 더 멋진 것들을 쓸 수있는 더 많은 유연성을 제공합니다.
참고 Shodanz 메서드를 비동기로 실행하려면
Async { ... }블록으로 래핑하십시오. 블록에서.wait로 다른 비동기 작동을 기다리려면.
REST API는 Shodan을 검색하고, 호스트를 찾고, 쿼리에 대한 요약 정보를 얻는 방법 및 다양한 유틸리티 방법을 제공하여 쉽게 개발할 수 있도록하는 방법을 제공합니다. 사용 방법에 대한 자세한 내용은 나머지 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을 검색하고 측면을 사용하여 다른 속성에 대한 요약 정보를 얻습니다.
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 Crawlers가 찾고있는 포트 번호 목록을 반환합니다.
client . ports 이 API 키에 링크 된 Shodan 계정에 대한 정보를 반환합니다.
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 Honeypot 확률 점수는 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 이 스트림은 특정 ASN에있는 장치에만 관심이있는 경우 배너 스트림의 필터링 된 대역폭 절약 뷰를 제공합니다.
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는 여러 익스플로잇/ 취약성 데이터 소스에 대한 액세스를 제공합니다. 사용 방법에 대한 자세한 내용은 Exploits API 문서를 참조하십시오.
다양한 데이터 소스를 검색하여 악용 및 측면을 사용하여 요약 정보를 얻으십시오.
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. 이 메소드는 결과를 반환하지 않는 차이와 함께 Exploits API search 메소드와 동일하게 작동합니다.
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 라이센스의 조건에 따라 오픈 소스로 제공됩니다.