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 suppport for multiple strategies, and adds a new “Domain Intel” strategy (blog post forthcoming).

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.

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.

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:

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

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.

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

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

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):

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:

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

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

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.

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:

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:

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!

And we can click on any of these and “iterate” with a new task. Let’s iterate on that first DnsRecord, sip.microsoft.com. Click on it and you’ll see all of the entity’s details, as well as the task runner below, where we can select from all tasks that can run on a DnsRecord entity.

In this case, we select “nmap scan” and hit “Run Task”, allowing us to iterate further!

Keep going, and see what you can discover.

Note that many tasks require an API key – which you configure in the “Configure” tab. Each listing has a handy link to the configuration, making it easy to provision an API key:

Don’t forget to check out the Dossier and Graph views to show you a listing of all entities and a graph of all entities respectively:

Oh, and by clicking on a node, you can get a bit more info in the HUD!

That’s it for now. Have fun! Please jump in the Gitter channel if you have troubles or want to learn more.