ukemi 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/lib/ukemi.rb +1 -0
- data/lib/ukemi/moderator.rb +1 -1
- data/lib/ukemi/services/dnsdb.rb +53 -0
- data/lib/ukemi/version.rb +1 -1
- data/ukemi.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 772366e3c49f7e5795e5725ca5535662c1626c9fa9522499aae4393b16c4d989
|
4
|
+
data.tar.gz: 13e976f1cc0e16c1e0e0b4cf96baeaefe848a963c827079616898564ad370732
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e15595740c568adc0b5c6feed7b881492afc1a3166f43b0f9a5aaff4e4a00dba9161e7d6a1decba2d71b900edd32fb969c341972ff82aa4a9dc21d9c6a771b57
|
7
|
+
data.tar.gz: a1ebc0af8b442e49f46204c40ee121317da97c4e4598adeb2724a4083c09c9e2b2647f80e152913ae6025ed8ae9fa4ba769e6defbeb2576c7493f712f6e7d3d2
|
data/README.md
CHANGED
@@ -10,6 +10,7 @@ Ukemi is a CIL tool for querying passive DNS services.
|
|
10
10
|
It supports the following services.
|
11
11
|
|
12
12
|
- [CIRCL passive DNS](https://www.circl.lu/services/passive-dns/)
|
13
|
+
- [DNSDB](https://api.dnsdb.info/)
|
13
14
|
- [PassiveTotal](https://community.riskiq.com/)
|
14
15
|
- [SecurityTrails](https://securitytrails.com/)
|
15
16
|
- [VirusTotal](http://virustotal.com)
|
@@ -30,6 +31,7 @@ Configuration is done via environment variables.
|
|
30
31
|
|------------------------|----------------------------|
|
31
32
|
| CIRCL_PASSIVE_PASSWORD | CIRCL passive DNS password |
|
32
33
|
| CIRCL_PASSIVE_USERNAME | CIRCL passive DNS username |
|
34
|
+
| DNSDB_API_KEY | DNSDB API key |
|
33
35
|
| PASSIVETOTAL_API_KEY | PassiveTotal API key |
|
34
36
|
| PASSIVETOTAL_USERNAME | PassiveTotal username |
|
35
37
|
| SECURITYTRAILS_API_KEY | SecurityTrails API key |
|
@@ -43,7 +45,7 @@ Commands:
|
|
43
45
|
ukemi help [COMMAND] # Describe available commands or one specific command
|
44
46
|
ukemi lookup [IP|DOMAIN] # Lookup passive DNS services
|
45
47
|
|
46
|
-
$ ukemi help
|
48
|
+
$ ukemi help lookup
|
47
49
|
Usage:
|
48
50
|
ukemi lookup [IP|DOMAIN]
|
49
51
|
|
data/lib/ukemi.rb
CHANGED
data/lib/ukemi/moderator.rb
CHANGED
@@ -13,7 +13,7 @@ module Ukemi
|
|
13
13
|
|
14
14
|
begin
|
15
15
|
service.lookup data
|
16
|
-
rescue ::PassiveTotal::Error, ::VirusTotal::Error, ::SecurityTrails::Error, PassiveCIRCL::Error
|
16
|
+
rescue ::PassiveTotal::Error, ::VirusTotal::Error, ::SecurityTrails::Error, PassiveCIRCL::Error, DNSDB::Error
|
17
17
|
nil
|
18
18
|
end
|
19
19
|
end.flatten.compact
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "date"
|
4
|
+
require "dnsdb"
|
5
|
+
|
6
|
+
module Ukemi
|
7
|
+
module Services
|
8
|
+
class DNSDB < Service
|
9
|
+
private
|
10
|
+
|
11
|
+
def config_keys
|
12
|
+
%w(DNSDB_API_KEY)
|
13
|
+
end
|
14
|
+
|
15
|
+
def api
|
16
|
+
@api ||= ::DNSDB::API.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def lookup_by_ip(data)
|
20
|
+
results = api.lookup.rdata(type: "ip", value: data, rrtype: "A")
|
21
|
+
results.map do |result|
|
22
|
+
rrname = result.dig("rrname")
|
23
|
+
# Remove the last dot (e.g. "example.com.")
|
24
|
+
data = rrname[0..-2]
|
25
|
+
Record.new(
|
26
|
+
data: data,
|
27
|
+
first_seen: Time.at(result.dig("time_first")).to_date.to_s,
|
28
|
+
last_seen: Time.at(result.dig("time_last")).to_date.to_s,
|
29
|
+
source: name
|
30
|
+
)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def lookup_by_domain(data)
|
35
|
+
results = api.lookup.rrset(owner_name: data, rrtype: "A")
|
36
|
+
results.map do |result|
|
37
|
+
first_seen = Time.at(result.dig("time_first")).to_date.to_s
|
38
|
+
last_seen = Time.at(result.dig("time_last")).to_date.to_s
|
39
|
+
|
40
|
+
values = result.dig("rdata") || []
|
41
|
+
values.map do |value|
|
42
|
+
Record.new(
|
43
|
+
data: value,
|
44
|
+
first_seen: first_seen,
|
45
|
+
last_seen: last_seen,
|
46
|
+
source: name
|
47
|
+
)
|
48
|
+
end
|
49
|
+
end.flatten
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/ukemi/version.rb
CHANGED
data/ukemi.gemspec
CHANGED
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency "webmock", "~> 3.8"
|
34
34
|
|
35
35
|
spec.add_dependency "addressable", "~> 2.7"
|
36
|
+
spec.add_dependency "dnsdb", "~> 0.1"
|
36
37
|
spec.add_dependency "mem", "~> 0.1"
|
37
38
|
spec.add_dependency "parallel", "~> 1.19"
|
38
39
|
spec.add_dependency "passive_circl", "~> 0.1"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ukemi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manabu Niseki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '2.7'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: dnsdb
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.1'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.1'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: mem
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -245,6 +259,7 @@ files:
|
|
245
259
|
- lib/ukemi/moderator.rb
|
246
260
|
- lib/ukemi/record.rb
|
247
261
|
- lib/ukemi/services/circl.rb
|
262
|
+
- lib/ukemi/services/dnsdb.rb
|
248
263
|
- lib/ukemi/services/passivetotal.rb
|
249
264
|
- lib/ukemi/services/securitytrails.rb
|
250
265
|
- lib/ukemi/services/service.rb
|