Simovits

C#-exempel-API till TheHive

TheHive (https://thehive-project.org/) är ett open source Incident-Response-hanteringssystem/Plattform som på senare tid börjat användas hos CERTs världen över. TheHive har ett enkelt ticketing-system och är specifikt utvecklat för just CERTs/SOCs vilket gör att man undviker mycket strul med tidsslösande anpassningar. Dessutom är det open source vilket gör licenshanteringen smidig (och kostnadseffektiv). Det finns en mängd integrationer för TheHive och det är lätt att själv integrera egna analysatorer och responders för IOCer genom dess “Cortex”-del (se mer här; https://blog.thehive-project.org/tag/responders/)

TheHive har även, precis som de flesta andra moderna verktyg, ett öppet API som är lättanvänt och kan användas för integrationer mot egna system för att exempelvis automatiskt skapa Case etc. Populärt är förstås att integrera mot loggsystem/SIEM-system och liknande. Det finns (förstås) färdiga bibliotek för Python att använda (https://github.com/TheHive-Project/TheHive4py) men TheHive har ett enkelt API att integrera mot och det blir inte många kodrader så det är egentligen inte så mycket nytta att använda någon annans bibliotek för sina integrationer.

Nedan visas delar av en enkel exempel-implementation av API:et i C# som kan användas som mall för egna integrationer. Endast en liten del av API:et är implementerat men, det är inte rocket-science att utöka med egna funktioner när man väl ser hur autentisering och grundläggande kommunikation fungerar.

        

public class HiveCreateCase
        {
            public string status;
            public string title;
            public string description;
            public int tlp;
            public int severity;

            public string startDate;
            public string[] tags;
            public string template;
        }

public Dictionary<string, object> createCase(HiveCreateCase hiveCase)
{
	System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();

	string strData = js.Serialize(hiveCase);
	string strJson = postPage(strURL + STR_SEARCH, strData);

	if (strJson == null) return null;

	Dictionary<string, object> objRetval2 = (Dictionary<string, object>)js.Deserialize(strJson, typeof(Dictionary<string, object>));

	return objRetval2;
}

Exempel-koden i en fullständig klass hittas under https://github.com/jamesrep/thehiveapi/blob/master/thehiveapi.cs

God fortsättning på det nya året!!!