Organizasyon Yönetimi
- Kullanıcıları Yönet
- Şablonlar
- Özel Etiketler
- Kullanıcı Arayüzü (UI) Yapılandırma
- Bildirimler ve Uç Noktalar
- Uç Noktalar
- Fonksiyonlar
Kullanıcıları Yönet
Kuruluşunuzda Kullanıcıları Yönetme
Kuruluşunuzdaki kullanıcıları yönetmek için org-yönetici profil veya en azından kullanıcıları yönetme izni gereklidir.
Kullanıcıların Listesi
Kuruluşunuzda, sol taraftaki menüdeki Kuruluş'a tıklayarak kullanıcıların listesine erişebilirsiniz. İlk sekme Kullanıcılar'dır.
Kullanıcı Bilgileri
Bir kullanıcı hakkında ayrıntılı bilgiye erişmek için Önizleme düğmesine tıklayın
Yapılandırma Parametreleri
Avatar
Kullanıcıya ilişkilendirilmiş avatarı yenilemek için yeni bir dosyayı sürükleyip bırakarak güncelleyin (PNG veya JPG dosyaları).
Giriş
Kullanıcı girişi Email Hesap için e-posta adresi. Bu, bildirimleri göndermek veya kullanıcılara şifre sıfırlama bağlantıları göndermek için kullanılır. Eğer dolu değilse Giriş kullanılır
Tip
Hesabın tipi. Normal veya Hizmet. Bir Hizmet hesabı etkileşimli oturum açama.
Kilitli
Bir kullanıcının uygulamaya girişini engeller.
MFA
Bir kullanıcının çoklu faktör kimlik doğrulama (MFA) yapılandırıp yapmadığını belirtir. Eğer yapıldıysa, Evet olarak gösterilir.
API Anahtarı Hesabın
API anahtarını tanımlayın, yenileyin, görün veya iptal edi.
Profil
Kullanıcıya verilen profil hakkındaki bilgiler.
İzinler
Profilde bulunan izinlerin listesi Şifre Kullanıcının parolasını oluşturun veya güncelleyin.
Şifre Sıfırla
Uygulama bir SMTP sunucusu ile yapılandırılmışsa, kullanıcıya bir sihirli bağlantı ile e-posta gönderin. Bağlantı kısa bir süre için aktiftir.
Oturumlar
Açık etkileşimli oturumların listesi. Bir oturumu kapatmak için silmeye tıklayın.
Kullanıcı Ekleme
Kuruluş içindeki org-yönetici kullanıcılar veya profillerinde manageUser rolüne sahip kullanıcılar, mevcut Kuruluşa kullanıcı ekleyebilirler.
Mevcut kuruluşa bir hesap eklemek için "+" düğmesine tıklayın ve bir hesap oluşturma ve hesap güncelleme rehberlerini izleyin.
Kullanıcı Yönetimi
Hesaplar, yalnızca mevcut kuruluşta silinebilir veya kilitlenebilir.
Şablonlar
Vaka Şablonlarını Tanımlama
Bu bölüm, kuruluşunuz için hazırladığınız Vaka şablonlarını içerir.
Vaka Şablonlarının Listesi
Vaka şablonlarının listesine, Kuruluş menüsünü açarak, ardından Şablonlar sekmesini ve Vakalar sekmesini açarak erişebilirsiniz.
Yeni bir Vaka şablonu oluşturmak için düğmesine tıklayın.
Yeni Vaka Şablonu
Yapılandırma Parametreleri
Önek
Bu şablonla oluşturulan bir Vakanın başlığına öne eklenen dize
Ad
Vaka şablonunun adı. API ile Vaka şablonunu tanımlamak için kullanılır
Görüntülenen Ad
Arayüzde görüntülenen Vaka şablonunun adı
TLP
Bu şablonla oluşturulan Vakanın varsayılan TLP'si
PAP
Bu şablonla oluşturulan Vakanın varsayılan PAP'ı
Ciddiyet
Bu şablonla oluşturulan Vakanın varsayılan
Ciddiyeti Etiketler
Bu şablonla oluşturulan Vakalara eklenecek etiketlerin listesi
Açıklama
Değiştirilmediği takdirde, bu şablonla oluşturulan Vakaların varsayılan açıklaması
Görevler
Şablonlara görevler ekleyin. Bunlar, bu şablonla oluşturulan Vakalara otomatik olarak eklenir
Özel Alanlar
Şablona Özel alanlar ekleyin. Özel alanlar için varsayılan değer de ayarlanabilir
Sayfalar
Şablona sayfa şablonları ekleyin. Bunlar, bu şablonla oluşturulan Vakalara otomatik olarak eklenir
Dışa Aktarım/İçe Aktarım
Vaka Şablonunu Dışa Aktarma
Vaka şablonları, seçenek ... simgesine tıklayarak ve |-> Dışa Aktar seçeneğini seçerek JSON dosyaları olarak dışa aktarılabilir.
Vaka Şablonunu İçe Aktar düğmesine tıklayın ve içe aktarılacak JSON formatlı dosyayı seçin.
Sayfa Şablonlarını Tanımlama
Bu bölüm, kuruluşunuz için hazırladığınız Sayfa şablonlarını içerir.
Sayfa Şablonlarının Listesi
Organizasyon menüsünü, ardından Şablonlar sekmesini ve Sayfalar sekmesini açarak listeye erişin.
Yeni bir Sayfa şablonu oluşturmak için "+"düğmesine tıklayın.
Yapılandırma Parametreleri
Başlık
Sayfa şablonu başlığı. API ile Sayfa şablonunu tanımlamak için kullanılır. Ayrıca şablon bir vakada kullanıldığında sayfa başlığı olarak da kullanılır.
Kategori
Sayfaları ortak bir tema altında gruplamak için kategori. Vakada sayfa ağacı olarak kullanılır.
İçerik
Sayfa şablonu bir vakada kullanıldığında varsayılan sayfa içeriği.
Dışa Aktarım/İçe Aktarım
Bir Sayfa Şablonunu Dışa Aktar
Sayfa şablonları, seçenek ... simgesine tıklayarak ve |-> Dışa Aktar seçeneğini seçerek JSON dosyaları olarak dışa aktarılabilir.
Sayfa Şablonunu İçe Aktar
Sayfa Şablonunu İçe Aktar düğmesine tıklayın ve içe aktarılacak JSON formatlı dosyayı seçin.
Rapor Şablonlarını Tanımlama
Bu bölüm, kuruluşunuz için hazırladığınız rapor şablonlarını içerir.
Rapor Şablonlarının Listesi
Rapor şablonlarının listesine, Kuruluş menüsünü açarak, ardından Şablonlar sekmesini ve Raporlar sekmesini açarak erişebilirsiniz.
Yeni bir Rapor şablonu oluşturmak için "+" düğmesine tıklayın.
Yapılandırma Parametreleri
Rapor başlığını ve açıklamasını tanımlayın.
Başlık
Sayfa şablonu başlığı. API ile Sayfa şablonunu tanımlamak için kullanılır. Ayrıca şablon bir vakada kullanıldığında sayfa başlığı olarak da kullanılır.
Açıklama
Sayfaları ortak bir tema altında gruplamak için kategori. Vakada sayfa ağacı olarak kullanılır.
İçerik
Sayfa şablonu bir vakada kullanıldığında varsayılan sayfa içeriği.
Ardından, başlık, altbilgi ve widget listesinden oluşan rapor içeriğini tanımlayın.
Başlık
Başlık, basit metin biçimlendirme içeriğinden oluşur. Bir başlık belirtmek zorunlu değildir
Metin Widget'ı
İçerik tanımlamak için bir metin kutusu tanımlamak mümkündür.
Bileşenler arasına ayrı başlıklar eklemek için bir metin kutusu tanımlanabilir.
Görüntü Bileşeni
Görüntüleri bilgisayar dosyalarında aratarak ekleyin veya sürükleyip bırakarak ekleyin
Tablo Bileşeni
Vaka öğelerini içeren tablolar ekleyin.
Parametreler :
Veri Sütunları
Sıralamalar
-
Tablo bilgilerinin sıralanması mümkündür.
-
Tablonun hangi verilere göre filtrelenmesi gerektiğini belirtin.
-
Sıralama düzenini seçin.
-
Birden fazla sıralama verisi ekleyin.
-
Gereksiz sıralama verilerini silin.
Filtreler
Veri Listesi
Vaka öğelerini içeren bir liste ekleyin.
Parametreler:
-
Bileşen eklendiğinde, en ilgili bilgiler otomatik olarak ön seçilir. Ancak, istenilen zaman yeni veriler eklenebilir.
-
Verilerin sırasını yeniden tanımlamak için sürükle ve bırak yöntemi kullanılabilir.
-
Son olarak, herhangi bir veriyi silmek için öğenin üzerinde bulunan çarpı düğmesine tıklanabilir.
Sıralamalar
Filtreler
Altbilgi
Altbilgi, metin biçimlendirme içeriği ile oluşturulur. Altbilgiyi tanımlamak zorunlu değildir.
Bileşenleri Düzenleme
Rapor Üzerindeki İşlemler
Özel Etiketler
Özel etiketler, TheHive'a eklenmiş sınıflandırmalara dahil edilmemiş olsalar bile, uyarılar'dan gelen veya vakalar'a veya gözlemlenebilir varlıklara eklenen tüm etiketleri toplar, hatta etkinleştirilmemiş olsalar dahi.
Liste, Vakalarda, Uyarılarda veya Gözlemlenebilirlerde bulunanların sayısıyla ilgili istatistikleri gösterir.
Yapılandırma
Tüm Özel etiketler için adlar ve renkler ayarlanabilir
Her etiket ayrıca silinebilir
Bu menüden bir etiketin silinmesi, kuruluştaki her Uyarı, Vaka ve Gözlemlenebilirler üzerindeki etiketi kaldıracaktır.
Kullanıcı Arayüzü (UI) Yapılandırma
TheHive kullanıcı arayüzünün (UI) çeşitli özelliklerinin ve ayarlarının düzenlenmesini ifade eder. Bu, kullanıcı arayüzünün görünümünü, davranışını ve işlevselliğini özelleştirmeyi içerir. UI yapılandırması genellikle kullanıcıların tercihlerine, organizasyonel gereksinimlere ve güvenlik politikalarına uygun olarak ayarlanır. Örnekler arasında tema seçimi, dil seçimi, bildirim ayarları, sayfa düzeni ve diğer kullanıcı tercihleri bulunur.
Kuruluş düzeyinde, birkaç UI davranışı yapılandırılabilir.
Listeye Kuruluş menüsünü açarak ve UI Yapılandırma sekmesine erişebilirsiniz.
Yapılandırma Parametreleri
Yapılandırma Parametreleri#
Boş Vaka düğmesini Gizle Varsayılan olarak devre dışı bırakılmıştır. Etkinleştirildiğinde, mevcut Kuruluşun kullanıcıları boş Vakalar oluşturamaz ve bir şablon kullanarak veya bir arşivden Vaka oluşturmak arasında seçim yapmak zorunda kalacaklardır.
: Varsayılan olarak devre dışı bırakılmıştır. Etkinleştirildiğinde, mevcut Kuruluşun kullanıcıları boş Vakalar oluşturamaz ve bir şablon kullanarak veya bir arşivden Vaka oluşturmak arasında seçim yapmak zorunda kalacakdır.
Gösterge Tablolarında Yenileme Seçeneğine İzin Verme: varsayılan olarak devre dışıdır. Etkinleştirildiğinde, geçerli kuruluştaki kullanıcılar gösterge tablolarını yenileyemez. Bu, belirli sayıda kullanıcı ile kullanıcı arayüzünde performans sorunlarıyla karşılaşıldığında faydalı olabilir.
Gösterge Tablolarında "Tümü" Dönem Seçeneğine İzin Verme: Varsayılan olarak devre dışıdır. Etkinleştirildiğinde, geçerli Kuruluştaki kullanıcılar gösterge tablolarında Tümü dönemini kullanamaz. Bu, kullanıcı arayüzünde performans sorunlarıyla karşılaşılması durumunda faydalı olabilir.
Uyarı Vakası Benzerlik Panelinin Varsayılan Filtresini Seçin: Bir Uyarı görünümünde Benzer Vaka sekmesi için varsayılan filtre
Tarihleri Görüntülemek İçin Kullanılan Varsayılan Tarih Biçimini Tanımlama: Tarihlerin geçerli kuruluş içinde hangi formatta görüntülenmesini istediğinizi seçin
Bildirimler ve Uç Noktalar
Giriş
Bir bildirim şu şekilde tanımlanır:
- Bir Tetikleyici
- Bir veya daha fazla Bildirimci
Tetikleyiciler
Her bildirim yalnızca bir tetikleyiciyle ilişkilendirilir. TheHive, Vakalar, Uyarılar, Görevler, Gözlemlenebilirler ve İşler üzerinde birkaç önceden tanımlanmış tetikleyici ile birlikte gelir. Özel tetikleyiciler de Filtrelenmiş Olay ile tanımlanabilir.
Başka bir tetikleyici, HerhangiBirOlaylar seçildiğinde herhangi bir olayda bildirimleri çalıştırmanıza olanak tanır.
Vakalar için Tetikleyiciler:
Uyarılar için Tetikleyiciler:
İşler için Tetikleyiciler:
Gözlemlenebilirler için Tetikleyiciler:
Görevler için Tetikleyiciler:
Filtrelenmiş Olay:
Filtrelenmiş Olay seçildiğinde, TheHive, yapılandırılmış bir JSON filtresi yazmanıza izin verir. Bu filtre, uygulamadaki belirli olayları eşleştirmeyi amaçlar ve bildiriciler tarafından tanımlanan bir veya daha fazla eylemi tetikler.
Birbirinden Farklı Bildiriciler
EmailToUser: geçerli Organizasyondaki tüm kullanıcılara bir e-posta gönderir
EmailToAddr : belirli bir e-posta adresine e-posta gönderir
HTTP İsteği: seçilen bir HTTP uç noktasına veri gönderme
Mattermost: seçilen bir Mattermost uç noktasına veri gönderir
Slack: seçilen bir Slack uç noktasına veri gönderme
MS Teams: seçilen bir Microsoft Teams uç noktasına veri gönderme
Webhook: seçilen bir webhook uç noktasına veri gönderme
Kafka: seçilen bir Kafka kuyruğuna veri gönderme
Redis: seçilen bir Redis uç noktasına veri gönderme
Bunlardan ikisi Cortex Analizörleri ve Yanıtlayıcıları çalıştırmak için ayrılmıştır:
RunAnalyzer: seçili Analizörleri çalıştır
RunResponder: seçili Yanıtlayıcıları çalıştır
Bildirimci Yapılandırması
Mattermost Yapılandırması
Bir EnpointOluştur
Organizasyon menüsünü açarak ve Bildirimler sekmesini seçerek Bildirimler listesine erişebilirsiniz.
Bildirim eklemek için "+" düğmesine tıklayın.
Bir bildirim oluşturun:
- Bildirime benzersiz bir ad verin
- Bir tetikleyici seçin
- Bir bildirici seçin ve yapılandırın
Daha sonra bildirimi kaydetmek için "Onayla"ya tıklayın.
Bildirimler Üzerinde İşlemler
Bir Bildirimi Sil
Bildirim listesinde sil seçeneğine tıklayın:
Bir Bildirimi Devre Dışı Bırakma
Bildirimler listesinde, devre dışı bırakmak istediğiniz bildirimi düzenleyin:
Sonucu Bildirimler listesinde belirtin.
Enpoint yapılandırması
Mattermost'u seçin ve gerekli bilgileri doldurun.
Mattermost Uç Noktası Yapılandırması:
Daha sonra, uç noktayı oluşturmak için "Onayla"ya tıklayın.
Bir Bildirim oluştururken Bildirimci olarak Mattermost'u seçin ve formu doldurun.
Mattermost'u Seçin
TheHive, giriş verileriyle şablonları oluşturmanıza olanak tanımak için Handlebars kullanır, ve bu çoğu form alanında kullanılabilir:
Daha sonra bu Bildiriciyi kaydetmek için "Onayla"ya tıklayın.
MS Teams Yapılandırması
Bir Enpoint oluşturun
Kuruluş yapılandırma görünümünde Uç Noktalar sekmesini açın. Ardından, şuna tıklayın
düğmesine basarak yeni bir Bildirici oluşturun.
Enpoint yapılandırması
Takımları seçin ve gerekli bilgileri doldurun.
Ad (Name:): uç noktaya benzersiz bir ad verin
URL: MS Teams'inize bağlanmak için URL'yi belirtin; Bu, Teams'de gelen web kancası oluşturulurken kopyalanan URL'dir
Kimlik Doğrulama Türü (Auth Type): Bu uç noktaya bağlanmak için Temel kimlik doğrulamayı kullanın veya Anahtar veya Taşıyıcı yöntemini kullanın
Proxy ayarları (Proxy settings): bu uç noktaya bağlanmak için bir web proxy kullanmayı seçin
Sertifika yetkilileri (Certificate authorities): Gerekirse özel Sertifika Yetkilileri ekleyin (PEM biçimi)
SSL ayarları (SSL settings): Sertifika Yetkilisi kontrolünü ve/veya ana bilgisayar adları kontrollerini devre dışı bırakın
Ardından, uç noktayı oluşturmak için onayla'ya tıklayın.
Bildirim yapılandırması
Bir Bildirim oluştururken Bildirimci olarak Teams/ENDPOINT (ENDPOINT oluşturulan uç noktanın adı olacak şekilde) öğesini seçin ve formu doldurun.
TheHive, giriş verileriyle şablonlar oluşturmanıza izin vermek için Handlebars kullanır ve bunu formun çoğu alanında kullanabilirsiniz:
Example: template used to display notification when a new Case is created
{
"type": "AdaptiveCard",
"body": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "#{{object.number}}: {{object.title}}",
"horizontalAlignment": "Left",
"spacing": "None",
"wrap": true
},
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"items": [
{
"type": "TextBlock",
"weight": "Bolder",
"text": "{{object._createdBy}}",
"fontType": "Default",
"color": "Accent",
"spacing": "None"
},
{
"type": "TextBlock",
"spacing": "None",
"text": "Created {{dateFormat object._createdAt "EEEE d MMMM, k:m Z" locale="en" tz="Europe/Paris"}}",
"isSubtle": true,
"wrap": true,
"fontType": "Default",
"weight": "Default",
"size": "Default"
}
]
}
]
},
{
"type": "FactSet",
"facts": [
{
"title": "severity",
"weight": "Bolder",
"value": "{{ severityLabel object.severity}}"
},
{
"title": "TLP",
"weight": "Bolder",
"value": "{{ tlpLabel object.tlp}}"
}
]
},
{
"type": "TextBlock",
"weight": "Bolder",
"text": "Description",
"spacing": "Large",
"wrap": true,
"horizontalAlignment": "Left"
},
{
"type": "TextBlock",
"text": "{{object.description}}",
"spacing": "None",
"wrap": true,
"horizontalAlignment": "Left",
"maxLines": 3
}
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "Open Case in TheHive",
"iconUrl": "https://docs.strangebee.com/images/thehive.png",
"url": "{{url}}",
"style": "positive"
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.5"
}
Oluşturulan tetikleyici Case ile birlikte kullanıldığında, bu şablon Microsoft Teams'de buna benzer bir kart oluşturacaktır:
İpuçları
MS Teams aktif Kartlarını yazın#
Uyarlanabilir kartınızı tasarlamak için başlangıç noktası olarak https://adaptivecards.io/designer/ adresini kullanın
Tarihleri biçimlendir#
TheHive, tarihleri okumak için işleyici çubukları dize yardımcılarını kullanır
Bildirimlerde tarih ve saati biçimlendirmek için özel Java kalıplarının kullanılması gerekir
TheHive#'dan diğer özel verileri biçimlendirme
TheHive'a özel birkaç veri, bildirimlerdeki nesne verileriyle birlikte özel dize işleyicileri kullanılarak düzgün bir şekilde görüntülenebilir:
TLP değerini görüntülemek için tlpLabel (örnek: {{tlpLabel object.tlp}})
PAP değerini görüntülemek için papLabel (örnek: {{papLabel object.pap}})
şiddet değerini görüntülemek için severityLabel (örnek: {{severityLabel object.severity}})
Slack kanallarına bildirim gönderme
Slack kanallarına bildirim göndermek için TheHive'da en az bir uç nokta oluşturmanız gerekmektedir. Bu uç nokta, TheHive'in Slack'e nasıl bağlanacağını tanımlar. Uç nokta oluşturun#
Organizasyon yapılandırma görünümünde, Uç Noktaları sekmesini açın. Ardından, yeni bir Bildirim Oluşturucu oluşturmak için "+" düğmesine tıklayın.
Enpoint yapılandırması
Slack'i seçin ve gerekli bilgileri doldurun.
- Ad: uç noktaya benzersiz bir ad verin
- Belirteç: hizmete bağlanmak için kullanılacak belirteci belirtin
- Kimlik Doğrulama Türü: Bu uç noktaya bağlanmak için Temel kimlik doğrulamayı kullanın veya Anahtar veya Taşıyıcı yöntemini kullanın
- Proxy ayarları: bu uç noktaya bağlanmak için bir web proxy kullanmayı seçin
- Sertifika yetkilileri: Gerekirse özel Sertifika Yetkilileri ekleyin (PEM biçimi)
- SSL ayarları: Sertifika Yetkilisi kontrolünü ve/veya ana bilgisayar adları kontrollerini devre dışı bırakın
Ardından, uç noktayı oluşturmak için onayla'ya tıklayın.
Bildirim yapılandırması
Bir Bildirim oluştururken Bildirimci olarak Slack'i seçin ve formu doldurun.
Slack'i seçin
TheHive, girdi verileriyle şablonlar oluşturmanıza izin vermek için Handlebars'ı kullanır ve bu, çoğu form alanında kullanılabilir:
- Bitiş noktası: kullanılacak bitiş noktasını seçin
- Kullanıcı adı: bir kullanıcı adı seçin. Giriş verilerinden bir bilgi kullanmak istiyorsanız değişken ekle seçeneğine tıklayın. Bu, uç noktada yapılandırılan varsayılan kullanıcı adını geçersiz kılacaktır
- Kanal: Slack'te veri gönderilecek hedef kanalı seçin. Giriş verilerinden bir bilgi kullanmak istiyorsanız değişken ekle seçeneğine tıklayın. Bu, uç noktada yapılandırılan varsayılan kanalı geçersiz kılacaktır
- Şablon: * Mevcut formatlar şunlardır: JSON, Markdown ve Düz metin
Şablona eklenecek bir değişken seçmek için Değişken ekle'ye tıklayın
Gelişmiş ayarlar
Slack entegrasyonu ile birlikte çeşitli yapılandırma seçenekleri gelir.
Örnekler
Blok şablonu örneği: vaka oluşturma hakkında bildirim gönderme
- Tetikleyici: CaseCreated
- Bildirici: Slack
[
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*New Case created: Case #{{object.number}}*"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "<{{url}}|{{object.title}}> \n :bee: \n {{object.description}}"
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Created by*\n{{object._createdBy}}\n*Assigned to*\n{{object.assignee}}"
}
]
}
]
Yapılandırma
- Bir Bildirim oluştururken Bildirimci olarak Kafka'yı seçin ve formu doldurun:
- Kafka'da kullanılan Konu
- Bağlanılacak IP adresi/homstname ve port
Daha sonra, diğer bildirimcileri eklemek için+ düğmesine tıklayın veya Bildirimi oluşturmak için onaylamak için Onayla'ya tıklayın.
Uç Noktalar
Endpoints, bir bilgisayar ağı üzerindeki iki cihaz arasında iletişim kurmalarını sağlayan ve veri alışverişi yapmalarını sağlayan belirli bir noktadır. Genellikle, ağda bulunan bilgisayarlar, sunucular, yazıcılar veya diğer cihazlar arasında iletişim sağlamak için kullanılırlar. Endpointler, bir ağdaki veri iletişiminin başladığı veya sona erdiği yerler olarak düşünülebilir. İletişim protokolleri (HTTP, FTP, SMTP gibi) kullanılarak belirli hizmetlere erişmek veya dosya alışverişi yapmak gibi çeşitli görevler için endpointler kullanılır.
Bir uç nokta, iki sistem birbirleriyle etkileşime geçtiğinde iletişim kanalındaki giriş noktasıdır.
Kullanıcı bir uç nokta oluşturabilir.
Desteklenen Bağlayıcılar
Uç noktaları ekle
Bir Uç Nokta Eklemek için "+" düğmesine tıklayın veya Yeni bir uç nokta ekle bağlantısına tıklayın.
Bağlayıcıyı seçin.
Kaydet düğmesine tıklayın.
Fonksiyonlar
Bu özellik, TheHive'in 5.1 ve daha yüksek sürümleriyle kullanılabilir.
Fonksiyonlar, harici uygulamaları doğrudan TheHive işlemlerine entegre etmenizi sağlar.
Bir Fonksiyon, TheHive içinde çalışan özel bir JavaScript kod parçasıdır. Fonksiyon, dışarıdan gelen girişleri alabilir, işleyebilir ve doğrudan TheHive API'lerini çağırabilir.
Bu örneğin, verileri dönüştüren bir Python yapıştırma servisi olmadan TheHive içinde bildirimler oluşturmak için kullanılabilir.
Fonksiyon Oluştur
Sisteminizde bir olay meydana geldiğinde TheHive'da bir uyarı oluşturmak istediğinizi varsayalım. Harici sisteminiz için olaylar için kendi şemasına sahipsiniz, şöyle bir şey:
{
"eventId": "d9ec98b1-410f-40eb-8634-cfe189749da6",
"date": "2021-06-05T12:45:36.698Z",
"title": "An intrusion was detected",
"details": "An intrusion was detected on the server 10.10.43.2",
"data": [
{"kind": "ip", "value": "10.10.43.2", "name": "server-ip" },
{"kind": "name", "value": "root", "name": "login" },
{"kind": "ip", "value": "92.43.123.1", "name": "origin" }
]
}
Bu format, TheHive ile aynı değil, bu yüzden verileri TheHive uygun uyarı formatına dönüştürmeniz gerekiyor.
Bir org-admin olarak, bu girdiyi alabilir, TheHive formatına dönüştürebilir ve bundan bir uyarı oluşturabilirsiniz.
Fonksiyonun kodu şöyle olabilir:
function handle(input, context) {
const theHiveAlert = {
"type": "event",
"source": "my-system",
"sourceRef": input.eventId,
"title": input.title,
"description": input.details,
"date": (new Date(input.date)).getTime(),
"observables": input.data.map(data => {
// map event data kind to TheHive Observable type
const dataType = data.kind === "ip" ? "ip": "other";
return {
"dataType": dataType,
"data": data.value,
"tags": [`name:${data.name}`] // use a tag for the data name
}
})
};
// call TheHive APIs, here alert creation
return context.alert.create(theHiveAlert);
}
Bir fonksiyon, üç moddan birinde olabilir:
Oluşturma sayfası, fonksiyonunuzu test etmenize ve uygulandığında ne döndüreceğinizi görmek için olanak sağlar. Kuru çalıştırma modunda, fonksiyon çalıştırılacak ancak hiçbir kaynak oluşturma veya değiştirme işlemi gerçekleştirilmeyecektir.
Fonksiyon Çağırma
Fonksiyon kaydedildikten sonra sisteminizden bir http çağrısı ile çağrılabilir:
curl -X POST -H 'Authorization: Bearer $API_KEY' https://<thehive_url>/api/v1/function/<function_name> -H 'Content-Type: application/json' --data '
{
"eventId": "d9ec98b1-410f-40eb-8634-cfe189749da6",
"date": "2021-06-05T12:45:36.698Z",
"title": "An intrusion was detected",
"details": "An intrusion was detected on the server 10.10.43.2",
"data": [
{"kind": "ip", "value": "10.10.43.2", "name": "server-ip" },
{"kind": "name", "value": "root", "name": "login" },
{"kind": "ip", "value": "92.43.123.1", "name": "origin" }
]
}
'
TheHive, girdinizi (HTTP çağrısının gövdesi), fonksiyonunuzun tanımını alacak ve girdiyle birlikte fonksiyonu çalıştıracaktır. HTTP çağrısına, fonksiyon tarafından döndürülen verilerle yanıt verecektir.
Örnek: Bir Splunk uyarısından bir alarm oluşturma
Bir Splunk uyarısı oluştururken, bir eylem olarak bir webhook tanımlayabilirsiniz. Bu nedenle uyarı tetiklendiğinde webhook, bir yük ile çağrılır. Ancak yük, Splunk tarafından tanımlanmış ve değiştirilemez.
Yük biraz böyle görünmelidir:
{
"sid": "rt_scheduler__admin__search__RMD582e21fd1bdd5c96f_at_1659705853_1.1",
"search_name": "My Alert",
"app": "search",
"owner": "admin",
"results_link": "http://8afeb4633464:8000/app/search/search?q=%7Cloadjob%20rt_scheduler__admin__search__RMD582e21fd1bdd5c96f_at_1659705853_1.1%20%7C%20head%201%20%7C%20tail%201&earliest=0&latest=now",
"result": {
"_time": "1659705859.827088",
"host": "8afeb4633464",
"source": "audittrail",
"sourcetype": "audittrail",
"action": "edit_search_schedule_priority",
"info": "granted",
"user": "admin",
"is_searches": "0",
"is_not_searches": "1",
"is_modify": "0",
"is_not_modify": "1",
"_confstr": "source::audittrail|host::8afeb4633464|audittrail",
"_indextime": "1659705859",
"_kv": "1",
"_raw": "Audit:[timestamp=08-05-2022 13:24:19.827, user=admin, action=edit_search_schedule_priority, info=granted ]",
"_serial": "1",
"_si": [
"8afeb4633464",
"_audit"
],
"_sourcetype": "audittrail",
"_subsecond": ".827088"
}
}
Bu splunk uyarısını bir TheHive uyarısına dönüştürmek için aşağıdaki gibi bir işlev kullanılabilir:
function handle(input, context) {
const theHiveAlert = {
"type": "splunk",
"source": input.search_name,
"sourceRef": input.result._serial,
"title": `Splunk Alert triggered: ${input.search_name} by ${input.result.sourcetype}`,
"description": `Alert created by splunk search '${input.search_name}:\n${input.result._raw}'`,
"date": (new Date(parseFloat(input.result._time)*1000)).getTime(),
"observables": [
{"dataType": "hostname", "data": input.result.host},
{"dataType": "other", "data": input.result.action, "message": "action"},
{"dataType": "other", "data": input.result._raw, "message": "raw"}
]
};
return context.alert.create(theHiveAlert);
}
Splunk'ta, web kancası url'sini TheHive işlev url'sine ayarlamanız gerekecektir.
Örnek: Soğuk dava otomasyonu
Çağrıldığında, bu işlev şunları yapacaktır:
New veya InProgress olan ve son bir ay içinde güncellenmemiş tüm vakaları bulun.
Bu vakaların her birine bir cold-case etiketi ekleyin.
function handle(input, context) {
const now = new Date();
const lastMonth = new Date();
lastMonth.setMonth(now.getMonth() - 1);
const filters = [
{
_name: "filter",
_and: [
{
_or: [{ _field: "stage", _value: "New" }, { _field: "stage", _value: "InProgress" },]
},
{
_lt: { _field: "_updatedAt", _value: lastMonth.getTime() }
}
]
}
];
const list = context.caze.find(filters);
const authorizedCases = list
.filter(caze => caze.userPermissions.indexOf("manageCase/update") > 0);
console.log(authorizedCases.map(c => c.number));
console.log(`Will update ${authorizedCases.length} cases`);
authorizedCases.forEach(caze => {
context.caze.update(caze._id, { addTags: ["cold-case"] })
});
}
Context API
Bilgi: Bağlam API'sindeki nesneler v1 Http Api'sinde kullanılanlarla aynıdır. Her nesnenin beklenen alanları hakkında daha fazla bilgi için lütfen Http Api Dokümantasyonuna bakın
userName: string: fonksiyonu çalıştıran kullanıcının adı
Http isteği
request.queryString() : Record<string, string[]>: Harita olarak biçimlendirilmiş istek sorgu dizesini içeren sözlük
request.getQueryString(key: string): string | null: Sorgu dizesinden bir değer alın
request.getHeader(name: string): string | null: İstekten bir başlığın değerini alır
request.headers(): Record<string, string>: İstek başlıklarını alır
request.contentType: string: Content-Type istek başlığının değeri
request.remoteAddress(): Arayanın ip adresini alın
Sorgu(query))
query.execute(query: any[]): Veritabanı üzerinde bir sorgu çalıştırır (bkz. Api dokümanları => query)
Uyarı(Alert)
alert.create(input: InputCreateAlert): OutputAlert
alert.get(id: string): OutputAlert
alert.update(InputUpdateAlert): OutputAlert
alert.delete(alertId: string): void
alert.createCase(alert: InputCreateAlert): OutputCase
alert.bulkDelete(input: {ids: string[]}): void
alert.mergeWithCase(alertId: string, caseId: string): OutputCase
alert.bulkMergeWithCase( {caseId: string, alertIds: string[]} ): OutputCase
alert.followAlert(alertId: string): OutputAlert
alert.unfollowAlert(alertId: string): OutputAlert
alert.importInCase(alertId: string, caseId: string): OutputAlert
alert.bulkUpdate(input: {ids: string[]} & InputUpdateAlert): void
alert.find(query: any[]): OutputAlert[]
case java'da ayrılmış bir anahtardır, bu nedenle bunun yerine caze kullanılır.
caze.create(input: InputCreateCase): OutputCase
caze.get(idOrNumber: string): OutputCase
caze.update(idOrNumber: string, update: InputUpdateCase): void
caze.merge(ids: string[]): OutputCase
caze.delete(idOrNumber: string): void
caze.changeCaseOwnership(idOrNumber: string, update: InputChangeCaseOwnership): void
caze.unlinkAlert(caseId: string, alertId: string): void
caze.mergeSimilarObservables(caseId: string): void
caze.bulkUpdate(update: {ids: string[]} & InputUpdateCase): void
caze.bulkApplyCaseTemplate(update: {ids: string[]} & InputApplyCaseTemplate): void
caze.find(query: any[]): OutputCase[]
Görevler(Task)
task.get(id: string): OutputTask
task.update(idOrName: string, update: Partial<OutputTask>): void
task.delete(id: string): void
task.find(query: any[]): OutputTask[]
task.setActionRequired(taskId: string, orgId: string): void
task.setActionDone(taskId: string, orgId: string): void
task.isActionRequired(taskId: string): Kayıt<string, bool>
task.createInCase(caseId: string, task: InputTask): OutputTask
task.bulkUpdate(update: {ids: string[]} & Partial<OutputTask>): void
Log
log.create(taskId: string, log: InputCreateLog): OutputLog
log.update(logId: string, update: InputUpdateLog): void
log.delete(logId: string): void
log.deleteAttachment(logId: string, attachmentId: string): void
log.find(query: any[]): OutputLog[]
Gözlemlenebilir (Observable Type)
observable.createInCase(caseId: string, observable: InputObservable): OutputObservable
observable.createInAlert(alertId: string, observable: InputObservable): OutputObservable)
observable.bulkUpdate(update: {ids: string[]} & Partial<OutputObservable>)
observable.get(idOrName: string): OutputObservable
observable.update(id: string, update: Partial<OutputObservable>): void
observable.delete(id: string): void
observable.find(query: any[]): OutputObservable[]
observable.updateAllTypes(fromType: string, toType: String): void
Gözlemlenebilir Tip
observableType.get(id: string): OutputObservableType
observableType.delete(id: string): void
observableType.create(ot: InputObservableType)
observableType.find(query: any[]): OutputObservableType[]
CustomField
customField.list(): OutputCustomField[]
customField.update(idOrName: string, update: Partial<OutputCustomField>): void
customField.delete(idOrName: string): void
customField.create(cf: InputCustomField): OutputCustomField
customField.find(query: any[]): OutputCustomField[]
Vaka Şablonu(Case Template)
caseTemplate.get(idOrName: string): OutputCaseTemplate
caseTemplate.update(idOrName: string, update: Partial<InputCaseTemplate>): void
caseTemplate.delete(idOrName: string): void
caseTemplate.create(template: InputCaseTemplate): OutputCaseTemplate
caseTemplate.find(query: any[]): OutputCaseTemplate[]
Prosedür(Procedure)
procedure.bulkCreateInCase(caseId: string, input: {procedures: InputProcedure[]}): OutputProcedure[]
procedure.bulkCreateInAlert(alertId: string, input: {procedures: InputProcedure[]}): OutputProcedure[]
procedure.createInCase(caseId: string, procedure: InputProcedure): OutputProcedure
procedure.createInAlert(alertId: string, procedure: InputProcedure): OutputProcedure
procedure.update(id: string, procedure: Partial<OutputProcedure>): void
procedure.delete(id: string): void
procedure.find(query: any[])
Vaka Durumu(Case Status)
caseStatus.create(input: InputCreateCaseStatus): OutputCaseStatus
caseStatus.update(idOrName: string, update: InputUpdateCaseStatus): void
caseStatus.delete(idOrName: string): void
caseStatus.find(query: any[]): OutputCaseStatus[]
Uyarı Durumu (Alert Status)
alertStatus.create(input: InputCreateAlertStatus): OutputAlerttatus
alertStatus.update(idOrName: string, update: InputUpdateAlertStatus): void
alertStatus.delete(idOrName: string): void
alertStatus.find(query: any[]): OutputAlerttatus[]
Yorum(Comment)
comment.createInCase(caseId: string, comment: InputCreateComment): ÇıktıYorum
comment.createInAlert(alertId:: string, comment: InputCreateComment): ÇıktıYorum
comment.update(id: string, update: InputUpdateComment): void
comment.delete(id: string): void
comment.find(query: any[]): OutputComment[]
Organizasyon (Organisation)
organisation.get(orgIdOrName: string): OutputOrganisation
organisation.create(org: InputCreateOrganisation): OutputOrganisation
organisation.update(orgIdOrName: string, update: InputUpdateOrganisation): void
organisation.bulkLink(orgIdOrName: string, links: InputOrganisationBulkLink): void
organisation.listLinks(orgIdOrName: string): OutputOrganisationLink[]
organisation.listSharingProfiles(): OutputSharingProfile[]
organisation.link(orgA: string, orgB: string, link: InputOrganisationLink | null): void
organisation.unlink(orgA: string, orgB: string): void
organisation.find(query: any[]): OutputOrganisation[]
Profil(Profile)
profile.get(idOrName: string): OutputProfile
profile.update(profileIdOrName: string, update: InputUpdateProfile): void
profile.delete(profileIdOrName: string): void
profile.create(profile: InputCreateProfile): ÇıktıProfili
profile.find(query: any[]): OutputProfile[]
Özel Etkinlik (Custom Event)
customEvent.createInCase(caseId: string, input: InputCreateCustomEvent): OutputCustomEvent
customEvent.update(id: string, update: InputUpdateCustomEvent): void
customEvent.delete(id: string): void
customEvent.find(query: any[]): OutputCustomEvent[]
Fonksiyon (Function)
function.create(function: InputCreateFunction): OutputFunction
function.update(functionIdOrName: string, update: InputUpdateFunction): void
function.delete(functionIdOrName: string): void
function.find(query: any[]): OutputFunction