Announcing the immediate release of Intrigue Core v0.4!

In this release, you’ll find:

If that weren’t enough, we added a total of 19 new modules:

This release also had a ton of work over the last few weeks as we prepared for RSA 2018. At RSA, Ed Bellis & I discussed “Recon for Defenders” and offered up a few specific CVEs and software that defenders must be very quick to patch – particularly when it’s available for scanning.

As part of that work, we spun up around over 100 simultaneous instances of Intrigue Core, and used these instances to scan the F500 using the “org_asset_discovery_active” strategy and a single domain seed. After running for 10 hours total, we had the world’s first ~complete attack surface scan of the entire F500. Pretty sweet.

We then anonymized and released the data from those tests. As you dig into them, you’ll notice a large number of servers and applications exposed at the perimeter that were still running vulnerable versions of this software at the time of testing.

Digging through the results, I realized that Core’s fingerprinting capabilities needed a lot of work, and so shortly after the talk, I sat down and overhauled the application fingerprinter, creating a pluggable system. Now, for each URI that the system wants to fingerprint, any piece of software can plug in a set of checks. This architecture us to minimize the number of HTTP requests we make, while still supporting a large number of fingerprints.

Now that v0.4 is available,  you can now immediately download and run Core through the normal AMI, Dockerfile, or (new in this release) in a local or remote VM using Vagrant!

We’re proud to announce that Intrigue Core v0.3 is now GA, and available on the ‘master’ git branch. There’s a load of new features available, including entity correlation, enrichment and vastly improved search and analysis capabilities. We’ve got new AWS S3 discovery tasks, Github discovery tasks and a cool new Org-based whois search. See below for links to more detail for each of these features. This release also adds support for multiple strategies, and adds a new “Domain Intel” strategy (blog post forthcoming).

New Features

New Tasks

New Strategies 

Just a quick note to mention a new addition: Project Statistics. Sometimes you need an overview of the types of entities and activity in the project. This is a handy way to get an overview. The individual counts are linked to the ‘Entities’ viewer, allowing you to dig in and get a better understanding.

Here’s a screenshot from a recent project:

This feature is immediately available on the ‘master’ branch. Enjoy!

Earlier this week, we added a couple features named “Entity Enrichment” and “Entity Aliasing”. These features allowed users to get a better picture of an entity through techniques such as DNS and clever ways of comparing entities.

Now, to make this even easier, we’ve added a way to show these correlated entities as a single unit. This makes seeing an entity with many different names easier.

Announcing the “Meta-Entity” view:

Now you can see there are 107 unique “meta-entities” vs the standard view with each entity shown as its own row (202). Previously, you’d need to do this correlation yourself on the Entities page, and it was difficult to tell if you’d already looked into an entity because many lines could represent the same entity, just a different view.

Comments & feedback welcome!

 

 

Announcing two new features called “entity enrichment” and “entity aliasing”.

Entity enrichment allows us to get a more complete picture of an entity. It is a process that happens automatically for certain entities upon their creation. Today IpAddress, DnsRecord, and Uri are supported. For each of these entity types, one or several enrichment tasks will be run as soon as the entity is created, allowing us to discover additional facts and alternate names (“aliases”) for the entity.

How it works: Upon creation, an enrichment task (lib/tasks/enrich/*) will be scheduled and run. In the case of an IpAddress, the name will be resolved to A, CNAME, or PTR records, DnsRecord entities created,  and finally “aliased” to the IpAddress.

Let’s show a quick demo.

First, create a new project and select the “Create Entity” task with a DnsRecord entity. In this case, we’ll use the DnsRecord “intrigue.io” with no recursive depth:

1

Hit “Run Task” and you’ll see that it kicks off the task, creating the entity:

2

Now browse to the entities page. Notice that there are now 3 total entities, one DnsRecord, and two IpAddress entities. Note also that the IpAddress entities are both are aliased to the “intrigue.io” DnsRecord. In this way, we can quickly find load balancers and other interesting DNS configurations.

3-entities_table

Now, let’s try with a larger iteration strategy (3):4

Give it a few moments, and now, on the Entities view, filtering for IpAddress only, we can see the correlation of IpAddress to DnsRecord:

5

This is also a good way to find DNS entries that are no longer active or resolving to an IP, but this is left as an exercise for the reader.

 

So you’ve gotten an instance of intrigue-core up and running using the AMI or Docker guide, but what now!? Give scans a try. Here’s now.

Create a new project, let’s run this one on Mastercard (They run a public bounty on Bugcrowd):

create_project

Now, run a “Create Entity” task to create a DnsRecord with the name “mastercard.com”.

This time, however, let’s set our recursive depth to 3. This will tell the system to run all viable tasks when a new entity is created, recursing until we reach our maximum depth:

iteration.jpg

Hit “Run Task” and you’ll see that our entity was successfully created:

create_entity.jpg

Now, let’s browse to the “Results” tab and get an overview of the “Autoscheduled Tasks” that have been kicked off automatically:

results-autoscheduled

Wow, 83 tasks in just a few seconds! Core is FAST, thanks to Sidekiq and Sequel. Now we can browse over to the “Graph” tab, and get an overview of the entities (nodes) and the tasks (edges) that created them.

mastercard

Note that the graph is generated every time you load the page, so you will need to refresh a couple times to get the graph to show. You can zoom in and out to get details on the nodes:

zoom-graph.jpg

Browsing over to the “Dossier”, you can see that there’s some fingerprinting happening on the webservers, based on the page contents. Note that there’s nothing invasive happening here, this is simply just doing page grabs and analyzing the results:

dossier-2

One neat feature is that core actually parses web content – including PDFs and other file formats to pull out metadata. More to come on this!

All this in just a few minutes: attack_surface

 

To get started with intrigue-core using Docker, you’ll need to install Docker on your machine.

Next, pull down the intrigue-core repository to your local machine with a git clone and jump into the directory:

$ git clone https://github.com/intrigueio/intrigue-core
$ cd intrigue-core

Then use Docker to build an image:

$ docker build .

Finally, (this is pretty easy, huh?) run the image with Docker!

$ docker run -i -t -p 0.0.0.0:7777:7777 [image id]

This will start the docker image with the intrigue-core services, giving you output that looks like the following (shortened for brevity):

Starting PostgreSQL 9.6 database server                                                                                                                                                           [ OK ] 
Starting redis-server: redis-server.
Starting intrigue-core processes
[+] Setup initiated!
[+] Generating system password: hwphqlymmpfrqurv
[+] Copying puma config....
[ ] File already exists, skipping: /core/config/puma.rb

* Listening on tcp://0.0.0.0:7777
Use Ctrl-C to stop

As it starts up, you can see that it generates a unique password. You can  now log in with the username intrigue and the password above at http://localhost:7777 on your host machine!

Now, you’re up and running,  see: Up and running with Intrigue-core

UPDATE: The latest test image can be found by searching ‘intrigue-core-edge’ in Community AMIs. It is currently only available in the Northern Virginia (US-east-1) region on EC2.

I’ve made an EC2 instance available for testing if you’d like a simple way to try it out. Here’s a simple demo of how to get started.

The current AMI name is: intrigue-core-edge-20180824-4.

Once it’s up & running, make sure to log in & update to the latest:

$ cd core && git pull && rbenv sudo service intrigue killall && rbenv sudo service intrigue start