Skip to content

Instantly share code, notes, and snippets.

View rvazarkar's full-sized avatar

Rohan Vazarkar rvazarkar

View GitHub Profile
import requests
from bs4 import BeautifulSoup
import re
import sys
if (len(sys.argv) < 2):
print 'Usage:'
print 'python arinScraper.py "target"'
sys.exit()
╔══════════════════════╦═══════════════════════╦═════════════╦════════════════════════════════════════════════════════════════════════╗
║ Objects in Domain ║ Time Taken ║ Cache Built ║ Other Comments ║
╠══════════════════════╬═══════════════════════╬═════════════╬════════════════════════════════════════════════════════════════════════╣
║ ~35000 ║ 25 minutes 34 seconds ║ No ║ ║
║ ~3000 ║ 30 seconds ║ No ║ Enumeration over VPN ║
║ ~370000 (not a typo) ║ 9 hours 42 minutes ║ No ║ Enumeration over VPN. Powershell ingestor never finished after 3 days ║
║ ~130000 ║ 40 minutes ║ No ║ ║
║ ~40500 ║ 10 minutes ║ No ║ Old inges
╔═══════════════════╦═══════════════════════╦══════════════════════╗
║ Collection Method ║ Old Ingestor ║ New Ingestor ║
╠═══════════════════╬═══════════════════════╬══════════════════════╣
║ Group ║ 1 minute 10 seconds ║ 19 seconds ║
║ LocalGroup ║ 29 minutes 57 seconds ║ 6 minutes 21 seconds ║
║ Session ║ 29 minutes 1 second ║ 5 minutes 36 seconds ║
║ ACL ║ 10 minutes 20 seconds ║ 37 seconds ║
╚═══════════════════╩═══════════════════════╩══════════════════════╝
public SearchRequest GetSearchRequest(string filter, SearchScope scope, string[] attribs, string domainName = null, string adsPath = null)
{
Domain targetDomain;
try
{
targetDomain = GetDomain(domainName);
}
catch
{
return null;
BlockingCollection<string> collection = new BlockingCollection<string>();
foreach (var string in collection.GetConsumingEnumerable()){
DoSomething(string);
}
namespace Sharphound2
{
//This class exists because of a memory leak in BlockingCollection. By setting the reference to Item to null after enumerating it,
//we can force garbage collection of the internal item, while the Wrapper is held by the collection.
//This is highly preferable because the internal item consumes a lot of memory while the wrapper barely uses any
class Wrapper<T>
{
public T Item { get; set; }
}
}
internal bool DoPing(string hostname)
{
try
{
using (var client = new TcpClient())
{
var result = client.BeginConnect(hostname, 445, null, null);
var success = result.AsyncWaitHandle.WaitOne(_pingTimeout);
if (!success)
{
{
"statements" : [
{
"statement" : "MERGE (n:User {name:'DOMAIN ADMINS@TESTLAB.LOCAL'})-[r:AdminTo]-(m:Computer {name:'PRIMARY.TESTLAB.LOCAL'})"
},
{
"statement" : "MERGE (n:User {name:'DOMAIN ADMINS@TESTLAB.LOCAL'})-[r:AdminTo]-(m:Computer {name:'SECONDARY.TESTLAB.LOCAL'})"
}
]
}
{
"statements" : [
{
"statement" : "MERGE (n:Group {name:{props.name}})",
"parameters" : {
"props" : {
"name" : "DOMAIN ADMINS@TESTLAB.LOCAL"
}
}
}
Collection Method API Call MSDN Link Default Targets Stealth Targets
Session NetSessionEnum https://msdn.microsoft.com/en-us/library/windows/desktop/bb525382(v=vs.85).aspx All Computers Domain Controllers + 'Share Servers'
LocalGroup Modified NetLocalGroupGetMembers https://msdn.microsoft.com/en-us/library/windows/desktop/aa370601(v=vs.85).aspx All Computers GPO Files
Group Ldap N/A All User Group and Computer Objects All User Group and Computer Objects
Trusts DsEnumerateDomainTrusts https://msdn.microsoft.com/en-us/library/ms675976(v=vs.85).aspx All Domain and TrustedDomain objects All Domain and TrustedDomain objects
LoggedOn Remote Registry + NetWkstaUserEnum https://msdn.microsoft.com/en-us/library/windows/desktop/aa370669(v=vs.85).aspx All Computers Domain Controllers + 'Share Servers'
ACL Ldap N/A All user group computer and domain objects All user group computer and domain objects
ObjectProps Ldap N/A All user and computer objects All user and computer objects