Organizasyon Yönetimi

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.

resim.png

Kullanıcı Bilgileri

Bir kullanıcı hakkında ayrıntılı bilgiye erişmek için Önizleme düğmesine tıklayın

resim.png

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.

resim.png

Yeni bir Vaka şablonu oluşturmak için düğmesine tıklayın.

Yeni Vaka Şablonu

resim.png

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.

resim.png

Bir Vaka Şablonunu İçe Aktarma

Vaka Şablonunu İçe Aktar düğmesine tıklayın ve içe aktarılacak JSON formatlı dosyayı seçin.

resim.png

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.

resim.png

Yeni bir Sayfa şablonu oluşturmak için "+"düğmesine tıklayın.

Yeni Sayfa Şablonu

resim.png

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.

resim.png

Sayfa Şablonunu İçe Aktar

Sayfa Şablonunu İçe Aktar düğmesine tıklayın ve içe aktarılacak JSON formatlı dosyayı seçin.

resim.png

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.

resim.png

Yeni bir Rapor şablonu oluşturmak için "+" düğmesine tıklayın.

Yeni Rapor Şablonu

resim.png

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

resim.png

Metin Widget'ı

İçerik tanımlamak için bir metin kutusu tanımlamak mümkündür.

resim.png

Bileşenler arasına ayrı başlıklar eklemek için bir metin kutusu tanımlanabilir.

resim.png

Görüntü Bileşeni

Görüntüleri bilgisayar dosyalarında aratarak ekleyin veya sürükleyip bırakarak ekleyin

resim.png

Tablo Bileşeni

Vaka öğelerini içeren tablolar ekleyin.

Parametreler :

  • Varlık Tanımlama: Hangi vaka öğelerinin tabloda görüntüleneceğini seçmek için varlık tanımlayın.

  • Maksimum Öğe Sayısı: Tabloda görüntülenecek maksimum öğe sayısını tanımlamak mümkündür.

  • Bilgi Koruması: Gözlemlenenlerin görüntülenmesinde bilgi korumasını etkinleştirmek mümkündür.

resim.png

Veri Sütunları

  • Bileşen eklendiğinde, en ilgili bilgiler otomatik olarak ön seçilir. Bununla birlikte, yeni sütunlar her zaman eklenabilir.

  • Sütunların sırasını yeniden tanımlamak için sürükle ve bırak kullanılabilir.

  • Son olarak, herhangi bir sütunu silmek için öğenin çarpı düğmesine tıklayarak silmek mümkündür.

resim.png

Sıralamalar

resim.png

Filtreler

  • Tabloya veri miktarını sınırlamak için filtreler ekleyebilirsiniz.

  • Seçilen varlıktan herhangi bir bilgiyi seçin.

  • Filtrelenmesi gereken operatörü belirtin.

  • Kontrol değerlerini tanımlayın.

  • Birden çok filtre eklenebilir.

  • Bir filtreyi silmek için çarpı düğmesini kullanın.

  • Son olarak, uygulanacak tüm filtreleri temizleyebilirsiniz.

resim.png

Veri Listesi

Vaka öğelerini içeren bir liste ekleyin.

Parametreler:

  • Liste içinde görüntülenecek vaka öğelerini seçmek için varlık tanımlayın.

  • Listede görüntülenecek maksimum öğe sayısını tanımlamak mümkündür.

  • Gözlemlenenlerin görüntülenmesinde bilgi korumasını etkinleştirmek mümkündür. 

resim.png

Veri Listesi
  • 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.

resim.png

Sıralamalar

  • Liste bilgilerini sıralamak mümkündür.

  • Listenin 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.

resim.png

Filtreler

  • Listenin içindeki verileri sınırlamak için filtreler ekleyebilirsiniz.

  • Seçilen varlıktan herhangi bir bilgiyi seçin.

  • Filtrelenmesi gereken operatörü belirtin.

  • Kontrol değerlerini tanımlayın.

  • Birden çok filtre ekleyebilirsiniz.

  • Bir filtreyi silmek için çarpı düğmesini kullanın.

  • Son olarak, uygulanacak tüm filtreleri temizleyebilirsiniz.

resim.png

Altbilgi

Altbilgi, metin biçimlendirme içeriği ile oluşturulur. Altbilgiyi tanımlamak zorunlu değildir.

resim.png

Bileşenleri Düzenleme

  • Bir bileşen rapora eklendiğinde, istenilen konuma sürüklenerek bırakılabilir.

  • Bir öğeyi raporun sonuna yerleştirmek için istenen bileşen düğmesine tıklanabilir.

  • Bileşenlerin sırası istenildiği zaman yeniden düzenlenebilir.

  • Başlık ve altbilgi hareket ettirilemez.

resim.png

Rapor Üzerindeki İşlemler

  • Rapor içindeki herhangi bir bileşeni düzenleme

  • Başlık ve altbilgi hariç herhangi bir bileşeni silme

  • Raporu önizleme

resim.png

  • Raporu istediğiniz zaman kaydedin
  • Rapor listesine dönmek için rapor düzenlemeden çıkın

resim.png

Ö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.

resim.png

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.

resim.png

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.

resim.png

Uyarıları Kapalı Vakalarla Birleştirin: varsayılan olarak devre dışıdır. Etkinleştirildiğinde, mevcut Kuruluştaki kullanıcıların Uyarıları birleştirmek için kapalı bir Vaka seçmelerine izin verilir.

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.

resim.png

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.

resim.png

Uyarı Vakası Benzerlik Panelinin Varsayılan Filtresini Seçin: Bir Uyarı görünümünde Benzer Vaka sekmesi için varsayılan filtre

resim.png

resim.png

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:

resim.png

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:

  • VakaKapatıldı (CaseClosed): Bir Vaka kapatıldığında bir eylemi çalıştır
  • VakaOluşturuldu (CaseCreated): Bir Vaka oluşturulduğunda bir eylemi çalıştır
  • VakaPaylaşıldı (CaseShared): Bir Vaka paylaşıldığında bir eylemi çalıştır

Uyarılar için Tetikleyiciler:

  • UyarıOluşturuldu (AlertCreated): Bir Uyarı oluşturulduğunda bir eylemi çalıştır
  • UyarıAlındı (AlertImported): Bir Uyarı içe aktarıldığında (bir Uyarıdan bir Vaka oluşturulur veya bir Uyarı mevcut bir Vakaya eklenirken) bir eylemi çalıştır

İşler için Tetikleyiciler:

  • İşTamamlandı (JobFinished): Bir İş başarıyla veya başarısızlıkla sonuçlandığında bir eylemi çalıştır

Gözlemlenebilirler için Tetikleyiciler:

  • GözlemOluşturuldu (ObservableCreated): Bir Gözlem oluşturulduğunda bir eylemi çalıştır

Görevler için Tetikleyiciler:

  • GirişGörevim (LoginMyTask): Bir Görevin yeni bir Günlük aldığında bir eylemi çalıştır
  • GörevAtandı (TaskAssigned): Bir Görev atandığında veya atanmış kişi güncellendiğinde bir eylemi çalıştır
  • GörevKapatıldı (TaskClosed): Bir Görev kapatıldığında bir eylemi çalıştır

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.


resim.png

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.

resim.png

Bildirim eklemek için "+" düğmesine tıklayın.

resim.png

Bir bildirim oluşturun:

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:

resim.png

Bir Bildirimi Devre Dışı Bırakma

Bildirimler listesinde, devre dışı bırakmak istediğiniz bildirimi düzenleyin:

resim.png

Sonucu Bildirimler listesinde belirtin.

resim.png


Bildiriciler

Enpoint yapılandırması

Mattermost'u seçin ve gerekli bilgileri doldurun.

resim.png

Mattermost Uç Noktası Yapılandırması:

  • Ad: Uç noktaya benzersiz bir ad verin
  • URL: Mattermost örneğinize bağlanmak için URL'yi belirtin
  • Kullanıcı Adı: Veri göndermek için kullanılan varsayılan kullanıcı adı
  • Kanal: Veri göndermek için kullanılan varsayılan kanal
  • Kimlik Doğrulama Türü: Bu uç noktaya bağlanmak için Temel kimlik doğrulamasını 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çiminde)
  • SSL Ayarları: Sertifika Yetkilisi kontrolünü devre dışı bırakın ve/veya ana bilgisayar adlarında kontrolleri devre dışı bırakın

Daha sonra, uç noktayı oluşturmak için "Onayla"ya tıklayın.

Bildirim Yapılandırması

Bir Bildirim oluştururken Bildirimci olarak Mattermost'u seçin ve formu doldurun.

resim.png

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:

  • Uç Nokta: Kullanılacak uç noktayı seçin
  • Kullanıcı Adı: Bir kullanıcı adı seçin. Giriş verilerinden bir bilgi kullanmak istiyorsanız, değişken eklemek için tıklayın. Bu, uç noktada yapılandırılmış varsayılan kullanıcı adını geçersiz kılacaktır.
  • Kanal: Verilerin gönderileceği Mattermost'taki hedef kanalı seçin. Giriş verilerinden bir bilgi kullanmak istiyorsanız, değişken eklemek için tıklayın. Bu, uç noktada yapılandırılmış varsayılan kanalı geçersiz kılacaktır.
  • Şablon:
    • Kullanılabilir formatlar: JSON, Markdown ve Düz metin
    • Şablona eklenecek bir değişken seçmek için Değişken Ekle'ye tıklayın

Daha sonra bu Bildiriciyi kaydetmek için "Onayla"ya tıklayın.

MS Teams Yapılandırması

Microsoft Teams'i Bildirimci olarak kullanmak için en az bir uç nokta oluşturmak gerekir. Bu uç nokta, TheHive'ın MS Teams'e nasıl bağlanacağını tanımlar.

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.

resim.png

Enpoint yapılandırması

Takımları seçin ve gerekli bilgileri doldurun.

resim.png

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.

resim.png

TheHive, giriş verileriyle şablonlar oluşturmanıza izin vermek için Handlebars kullanır ve bunu formun çoğu alanında kullanabilirsiniz:

  • Uç Nokta (Endpoint): Kullanılacak uç noktayı seçin
  • Metin Şablonu (Text template:): Bu zorunludur, hatta bir uyarlanabilir kart şablonu doldurulmuş olsa bile. Bu, özet bölümünde, bildirimlerde kullanılır. Biçim düz metindir.
  • Uyarlanabilir Kart Şablonu (Adaptive card template:):
    • Mevcut formatlar: JSON, Markdown ve Düz metin
    • Şablon içine eklemek için bir değişken seçmek için "Değişken Ekle"ye tıklayın.

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:

resim.png

İ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.

resim.png

Enpoint yapılandırması

Slack'i seçin ve gerekli bilgileri doldurun.

resim.png

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.

resim.png

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:

Ardından bu Bildiriciyi kaydetmek için onayla'ya tıklayın.

Gelişmiş ayarlar

Slack entegrasyonu ile birlikte çeşitli yapılandırma seçenekleri gelir.

resim.png

resim.png

Örnekler

Blok şablonu örneği: vaka oluşturma hakkında bildirim gönderme

[
  {
    "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}}"
      }
    ]
  }
]

Kafka'ya bildirim gönderme

Yapılandırma

resim.png

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.

resim.png

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.

resim.png

Desteklenen Bağlayıcılar

  • Web kancası
  • Mattermost
  • Slack
  • HTTP

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.

resim.png

Yeni bir sayfa açılır.

Bağlayıcıyı seçin.
Kaydet düğmesine tıklayın.

resim.png

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);
}

resim.png

Bir fonksiyon, üç moddan birinde olabilir:

  • Etkin: Çağrıldığında fonksiyon çalıştırılacaktır.
  • Devre Dışı: Çağrıldığında fonksiyon çalıştırılmayacaktır.
  • Kuru Çalıştırma: Fonksiyon çalıştırılacak ancak TheHive'ta hiçbir varlık oluşturulmayacak veya değiştirilmeyecek. Varlık oluşturma işlemleri null dönecektir. Bu, entegrasyonunuzu canlıya almadan önce test etmeniz için faydalı 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.

resim.png

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

Kullanıcı
userId: string : fonksiyonu çalıştıran kullanıcının kullanıcı adı
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

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[]

Paylaş(Share)

share.setCaseShares(caseId: string, input: InputCreateShares): OutputShare[]
share.removeSharesFromCase(caseId: string, input: InputRemoveShares): void
share.removeShare(shareId: string): void
share.removeShares(input: {ids: string[]} ): void
share.removeTaskShares(taskId: string, input: InputRemoveShares): void
share.removeObservableShares(observableId: string, input: InputRemoveShares): void
share.listShareCases(caseId: string): OutputShare[]
share.listShareTasks(taskId: string): OutputShare[]
share.listShareObservables(observableId: string): OutputShare[]
share.shareCase(caseId: string, input: InputCreateShare): OutputShare
share.shareTask(taskId: string, input: InputCreateShare): OutputShare
share.shareObservable(observableId: string, input: InputCreateShare): OutputShare
share.updateShare(shareId: string, update: InputUpdateShare): void

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