Raven – Advanced Cyber Threat Map (Simplified, customizable and responsive. It uses D3.js with TOPO JSON, has 247 countries, ~100,000 cities, and can be used in an isolated environment without external lookups!.
Features
You have different options ip
, name
, and coordinates
ip
private or public ip -> any of these IPs -> 0.0.0.0
or 8.8.8.8
as {'from':'0.0.0.0','to':'8.8.8.8'}
name
city,state,country -> any of these formats work -> seattle,wa,us
or 0,us
as {'from':'seattle,wa,us','to':'0,in'}
coordinates
Latitude and Longitude as {'from':['-11.074920','-51.648929'],'to':['51.464957','-107.583864']}
Method 1 – Embed it and interact with it
//You only need to embed this iframe in your project.
<iframe id=”raven-iframe” src=”src/raven.html” frameborder=”0″ width=”100%” height=”100%” scrolling=”auto”>
//Then, run the initialization script with your custom settings – That’s all!
script type=”text/javascript”>
document.getElementById(‘raven-iframe’).addEventListener(“load”, function() {
var raven_options = {
‘world_type’: null,
‘selected_countries’: [],
‘remove_countries’: [‘aq’],
‘height’: window.innerHeight,
‘width’: window.innerWidth,
‘backup_background_color’: ‘#212222’,
‘orginal_country_color’: ‘#737373’,
‘clicked_country_color’: ‘#6c4242’,
‘selected_country_color’: ‘#ff726f’,
‘attack_output’: true,
‘global_timeout’: 2000,
‘global_stats_limit’: 10,
‘db_length’: 1000,
‘location’: ‘scripts’,
‘panels’: [‘multi-output’, ‘single-output’,’tooltip’, ‘random’, ‘insert’,’taskbar’],
‘disable’: [],
‘verbose’: true
}
window[‘raven’] = document.getElementById(‘raven-iframe’).contentWindow.raven
window[‘raven’].init_all(raven_options)
window[‘raven’].init_world()
});
//After that, you can plot any data you want
raven.add_to_data_to_table(‘name’,{‘from’:’seattle,wa,us’,’to’:’delhi,in’},{‘line’:{‘from’:null,’to’:null}},2000,[‘line’,’multi-output’,’single-output’])
Plotting data (functions)
raven.add_marker_by_name() //Plot info by country or city name
raven.add_marker_by_ip() //Plot data by IP address
raven.add_marker_by_coordinates() //Plot data by coordinates
marker_object //An object {‘from’:”,’to’:””} see examples
colors_object //An object {‘line: {‘from’: ”#FF0000′,’to’: ‘FF0000’}} this the color of the line between 2 points – (if null, then a random color will be picked)
timeout //Animation time out
options = [] //A list of options such as animation marker
Plotting data (As line, from -> to)
raven.add_marker_by_name({‘from’:’seattle,wa,us’,’to’:’delhi,in’},{‘line’:{‘from’:null,’to’:null}},2000,[‘line’])
raven.add_marker_by_ip({‘from’:’0.0.0.0′,’to’:’0.0.0.0:53′},{‘line’:{‘from’:’#FF0000′,’to’:’#FF0000′}},1000,[‘line’])
raven.add_marker_by_coordinates({‘from’:[‘-11.074920′,’-51.648929′],’to’:[‘51.464957′,’-107.583864′]},{‘line’:{‘from’:null,’to’:’#FFFF00′}},1000,[‘line’])
Plotting data (As point)
raven.add_marker_by_name({‘from’:’portland,or,us’,’to’:null},{‘line’:{‘from’:null,’to’:null}},2000,[‘point’])
raven.add_marker_by_ip({‘from’:’8.8.8.8′,’to’:null},{‘line’:{‘from’:’#FF0000′,’to’:’#FF0000′}},1000,[‘point’])
raven.add_marker_by_coordinates({‘from’:[‘-11.074920′,’-51.648929′],’to’:null},{‘line’:{‘from’:null,’to’:’#FFFF00′}},1000,[‘point’])
Plotting data + adding it to the output table (function)
raven.add_to_data_to_table() //Plot info and add them to the output table
method //Name, IP or coordinates
marker_object //An object {‘from’:”,’to’:””} see examples
colors_object //An object {‘line: {‘from’: ”#FF0000′,’to’: ‘FF0000’}} this the color of the line between 2 points – (if null, then a random color will be picked)
timeout //Animation time out
options = [] //A list of options such as animation marker ‘line’, and plot place ‘multi-output’ or ‘single-out’ table or both
Plotting data + adding it to the output table (As line, from -> to)
raven.add_to_data_to_table(‘name’,{‘from’:’seattle,wa,us’,’to’:’delhi,in’},{‘line’:{‘from’:null,’to’:null}},2000,[‘line’,’multi-output’,’single-output’])
raven.add_to_data_to_table(‘ip’,{‘from’:’0.0.0.0′,’to’:’0.0.0.0:3389′},{‘line’:{‘from’:’#FF0000′,’to’:’#FF0000′}},1000,[‘line’,’multi-output’])
raven.add_to_data_to_table(‘coordinates’,{‘from’:[‘-11.074920′,’-51.648929′],’to’:[‘51.464957′,’-107.583864′]},{‘line’:{‘from’:null,’to’:’#FFFF00′}},1000,[‘line’,’single-output’])
Plotting data + adding it to the output table (As point)
raven.add_to_data_to_table(‘name’,{‘from’:’seattle,wa,us’,’to’:’delhi,in’},{‘line’:{‘from’:null,’to’:null}},2000,[‘line’,’multi-output’,’single-output’])
raven.add_to_data_to_table(‘ip’,{‘from’:’0.0.0.0′,’to’:’0.0.0.0:3389′},{‘line’:{‘from’:’#FF0000′,’to’:’#FF0000′}},1000,[‘line’,’multi-output’])
raven.add_to_data_to_table(‘coordinates’,{‘from’:[‘-11.074920′,’-51.648929′],’to’:[‘51.464957′,’-107.583864′]},{‘line’:{‘from’:null,’to’:’#FFFF00′}},1000,[‘line’,’single-output’])
Method 2 – Embed it, and use websocket for plotting
Raven Map
You only need to embed this iframe in your project.
iframe id=”raven-iframe” src=”src/raven.html” frameborder=”0″ width=”100%” height=”100%” scrolling=”auto”>
script type=”text/javascript”>
document.getElementById(‘raven-iframe’).addEventListener(“load”, function() {
var raven_options = {
‘world_type’: null,
‘selected_countries’: [],
‘remove_countries’: [‘aq’],
‘height’: window.innerHeight,
‘width’: window.innerWidth,
‘backup_background_color’: ‘#212222’,
‘orginal_country_color’: ‘#737373’,
‘clicked_country_color’: ‘#6c4242’,
‘selected_country_color’: ‘#ff726f’,
‘attack_output’: true,
‘global_timeout’: 2000,
‘global_stats_limit’: 10,
‘db_length’: 1000,
‘location’: ‘scripts’,
‘panels’: [‘single-output’],
‘disable’: [‘multi-output’,’tooltip’, ‘random’, ‘insert’,’taskbar’,’move_to_country’],
‘websocket’:{‘server’:’ws://localhost:5678′,
‘request_timeout’:3000},
‘verbose’: false
}
window[‘raven’] = document.getElementById(‘raven-iframe’).contentWindow.raven
window[‘raven’].init_all(raven_options)
window[‘raven’].init_world()
window[‘raven’].fetch_data_from_server()
});
Plotting data – Send the json object using Websocket ws://localhost:5678
{
“function”:”marker”,
“method”: “ip”,
“object”: {
“from”: “0.0.0.0”,
“to”: “0.0.0.0”
},
“color”: {
“line”: {
“from”: “#977777”,
“to”: “#17777”,
}
},
“timeout”: 1000,
“options”: [
“line”,
“single-output”,
“multi-output”
]
}
Plotting data and add to table – Send the json object using Websocket ws://localhost:5678
{
“function”:”table”,
“method”: “name”,
“object”: {
“from”: “0,us”,
“to”: “0,br”
},
“color”: {
“line”: {
“from”: “#977777”,
“to”: “#17777”,
}
},
“timeout”: 1000,
“options”: [
“line”,
“single-output”,
“multi-output”
]
}
Run simulation (Isolated)
sudo docker build -t simulation . && sudo docker run -p 5678:5678 -p 8080:8080 -it simulation
Elementary OS 8 has been released with a significant focus on privacy, security, and user…
Today we’re happy to announce the much-anticipated launch of Raspberry Pi Compute Module 5, the…
Ulfberht is a sophisticated shellcode loader designed to enhance operational security and evasion capabilities in…
The TrailShark Capture Utility seamlessly integrates with Wireshark, facilitating the capture of AWS CloudTrail logs…
The tool is written in Go, so make sure to install it on your system…
In today’s dynamic threat landscape, security leaders are under constant pressure to make informed choices…