Merhaba ben saldırı timlerinden Bunjo, bu konuda Ruby'de "Shodan" arama motoru için bize sunulmuş bir API geminin nasıl kullanıldığını anlatacağım.
Shodan Nedir?
Shodan, internet üzerindeki cihazları ve bağlı sistemleri araştırmak, tarayarak bulmak ve profillendirmek için kullanılan bir arama motorudur. Shodan, genellikle siber güvenlik profesyonelleri, araştırmacılar ve beyaz şapkalı hackerlar tarafından kullanılır. Bu platform, çeşitli internet bağlantılı cihazları ve ağları tarar, bu cihazlar hakkında bilgi toplar ve bu bilgileri kullanıcılarına sunar.
Shodan'ın özellikleri:
Ağ Tarayıcısı: Shodan, internet üzerindeki IP adresleri ve bağlı cihazları tarayarak açık servisleri, bağlantıları ve diğer önemli bilgileri toplar.
Arama Yetenekleri: Kullanıcılar, belirli özelliklere, protokollere veya cihaz tiplerine göre arama yapabilir. Örneğin, belirli bir portta açık olan cihazları veya belirli bir marka/modeldeki kameraları bulabilirsiniz.
Banner Bilgileri: Shodan, herhangi bir cihazın servisine ait banner bilgilerini (örneğin, HTTP sunucu başlıkları, SSH banner'ları) toplar. Bu bilgiler, güvenlik açıklarını belirleme ve cihazları doğrulama konusunda kullanılabilir.
Grafiksel Haritalama: Shodan, cihazların coğrafi konumlarına dayalı olarak haritalama özelliği sunar. Bu, belirli bir bölgedeki açık cihazları görselleştirmek için kullanılabilir.
API Desteği: Shodan, kullanıcılarına API (Application Programming Interface) sağlar, böylece Shodan'ın verilerini programlarında veya özel araştırmalarında kullanabilirler.
Shodan'ın kullanımı, bilgi güvenliği alanında çalışan profesyonellerin ve araştırmacıların dijital varlıkları daha iyi anlamalarına ve güvenlik zafiyetlerini belirlemelerine yardımcı olabilir.
bknz.
Ruby İle API Kullanımı
Öncelikle gem kurulumunu yapalım.
Bash:
gem install shodanz
Oturum açtıktan sonra bu adresten API anahtarınızı alabilirsiniz.
Tüm Kod:
Ruby:
require 'shodanz'
shodan = Shodanz.client.new(key: 'shodan KEY')
results = shodan.host_search('apache')
puts "Results Found: #{results['total']}"
results['matches'].each do |result|
puts "IP: #{result['ip_str']}"
puts result['data'] + "\n"
end
Çıktı:
CoffeeScript:
IP: 154.218.139.58
HTTP/1.1 200 OK
Date: Tue, 28 Jan 2020 22:13:53 GMT
Server: Apache
Upgrade: h2
Connection: Upgrade, close
Last-Modified: Wed, 26 Apr 2017 08:03:47 GMT
ETag: "52e-54e0d47a39ec0"
Accept-Ranges: bytes
Content-Length: 1326
Vary: Accept-Encoding
Content-Type: text/html
IP: 132.148.235.102
HTTP/1.1 200 OK
Date: Tue, 28 Jan 2020 22:13:53 GMT
Server: Apache
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Fri, 10 May 2019 09:10:49 GMT
ETag: "a4edb-7ab-58884f152c219"
Accept-Ranges: bytes
Content-Length: 1963
Vary: Accept-Encoding,User-Agent
Content-Type: text/html
IP: 112.126.140.94
HTTP/1.1 404 Not Found
Date: Tue, 28 Jan 2020 22:13:34 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
X-UA-Compatible: IE=EmulateIE7
Transfer-Encoding: chunked
Content-Type: text/html
Github: GitHub - thebunjo/Ruby-Shodan-API
Okuyan herkese teşekkür ederim.