• BloodHound 1.5: The Container Update

    March 28, 2018 - 11 minute read
    Intro When BloodHound 1.4 came out in October of 2017, the object properties added represented the first major change in the BloodHound database schema since the original creation of the project. Today, we’re proud to present BloodHound 1.5, which represents a much larger change in both the database schema, as well as many long standing features of the BloodHound user interface. Containers - GPOs and OUs One of the things the BloodHound team has been talking about for quite a while now is adding GPO and OU objects to the BloodHound schema. With the 1.5 update, this is...
    -
    bloodhound
  • SharpHound: Target Selection and API Usage

    March 5, 2018 - 8 minute read
    Intro One of the most common questions we get from BloodHound users is related to how collection is done, as well as what targets are selected for different collection methods. In this post, we’re going to detail what each collection method does, particularly which API calls are used for each different step, as well as the detailed target selection logic. What does each collection method do? The SharpHound collector has several discrete steps which run simultaneously to collect different data necessary for the graph. The overall breakdown falls into a few categories: Local Admin Collection, Group Membership Collection,...
    -
    bloodhound
  • SharpHound: Technical Details

    October 23, 2017 - 15 minute read
    Intro In the previous blog post, we focused on SharpHound from an operational perspective, discussing some of the new features, as well as improved features from the original ingestor. In this post, we’ll talk more about the technical and underlying changes made to the ingestor that optimize the way data is collected. Pure LDAP In the previous versions of the BloodHound ingestor, and the majority of the tools released, communication with Active Directory is done using the DirectorySearcher class in the System.ActiveDirectory namespace. In SharpHound, we’ve transitioned to a lower level API, the System.ActiveDirectory.Protocols namespace. DirectorySearcher provides...
    -
    bloodhound
  • BloodHound 1.4: The Object Properties Update

    October 10, 2017 - 9 minute read
    Intro If you’ve been following the development of BloodHound, you’ll notice that the team has been very active lately. The culmination of all this recent work is the release of BloodHound 1.4. While the changes made may seem minor, we’ve decided that it deserves being tagged with a new release number, as it fixes quite a few issues and introduces some new features which should lead to far more interesting queries and analytics down the line. These new queries are on the to-do list for the BloodHound team, and should come out in the near(ish) future. However, we felt...
    -
    bloodhound
  • SharpHound: Evolution of the BloodHound Ingestor

    September 19, 2017 - 11 minute read
    Intro Over the past few months, the BloodHound team has been working on a complete rewrite of the C# ingestor. One of the biggest problems end users encountered was with the current (soon to be replaced) PowerShell ingestor, particularly in speed of enumeration as well as crippling memory usage. In moderately sized environments, the ingestor would happily eat up gigabytes of memory. There’s lots of reasons for this, almost all to do with the limitations of using PowerShell V2 as the base language. Limitations of the Current Ingestor A huge problem with the current ingestor is that...
    -
    bloodhound
  • BloodHound: Intro to Cypher

    February 19, 2017 - 12 minute read
    Intro One of the most overlooked features of BloodHound is the ability to enter raw Cypher queries directly into the user interface. Likely, a lot of that has to do with the fact that it’s not a very emphasized feature, not to mention it requires learning Cypher. However, with a bit of work, using raw Cypher queries can let you manipulate and examine BloodHound data in custom ways that will help you further understand your network or identify interesting relationships. What is Cypher? Just like SQL exists for MSSQL and other databases, the Neo4j graph database has its...
    -
    bloodhound
  • MS14-068 and KrbCredExport

    March 30, 2015 - 6 minute read
    Intro On a past assessment, we found a Domain Controller that was vulnerable to the infamous MS14-068 exploit. While trying to get the exploit working properly, we ran into some random issues that we had to work through. I wanted to document the process we used for successful exploitation, as well as the fixes we developed along the way. I don’t intend to go in depth on exactly how MS14-068 works. If you want a detailed explanation, you can find a fantastic one here. At a high level, the logic that verifies the cryptographic signing of a certain...
    -
    tradecraft