---
title: 'Tehdit İstihbaratı'
source: 'https://academia.sh/tr/kurslar/guvenlik-operasyonlari/tehdit-istihbarati'
course: 'Güvenlik Operasyonları ve Olay Müdahalesi'
language: tr
updated: '2026-08-17T18:08:41+00:00'
license: 'CC BY-SA 4.0'
---

# Tehdit İstihbaratı

900 göstergelik kurgu bir besleme ile 12 davranış tanımı 90 günlük pencerede ömür ekseninde karşılaştırılır: adres göstergesinin medyan ömrü 5 gün, dosya karması 2 gün, ad 15 gün; davranış tanımının medyan ömrü 358 gündür. Doksanıncı günde eklenmiş 900 göstergenin yalnız 72'si geçerli, 828'i ölüdür. 60 kurgu temasın gösterge listesiyle 5'i eşleşiyor, 28'inde gösterge o gün listede henüz yok, 27'sinde ömrü dolmuş. Saklamayı 3 günden 90 güne çıkarmak yakalananı 2'den 5'e taşırken ölü eşleşmeyi 2'den 190'a çıkarıyor ve incelemeyi 36 dakikadan 1.755 dakikaya. Davranış tanımları 27 temas yakalıyor, ölü eşleşme üretmiyor; kalem başına yakalama binde 5,6'ya karşı binde 2.250.

Bir önceki dersin altı hipotezi ortamın kendi verisinden çıktı: taban çizgisi, olağan üst süreç,
olağan saat. Hiçbiri "başkalarında ne görüldüğü" bilgisini kullanmadı. O bilgi dışarıdan gelir ve
iki ayrı biçimde gelir — tek tek **göstergeler** ve **davranış tanımları**.

İkisi bir listede yan yana durduğunda aynı şey gibi görünür; ikisi de "şuna bak" der. Ayrıldıkları
yer **ömürdür**. Bir gösterge belirli bir değerdir ve o değer değişince kullanılamaz hâle gelir; bir
davranış tanımı bir yöntemi tarif eder ve yöntem değişmedikçe geçerli kalır. Bu ders farkı gün ve ay
cinsinden sayar. Aşağıdaki besleme bir **modeldir**; hiçbir sağlayıcı, kaynak ya da kampanya adı
geçmez ve ömür değerleri veridir.

- **TA38.** Besleme 900 gösterge taşır: 420 adres, 380 dosya karması, 100 ad. Her göstergenin
  eklendiği gün ve bir ömrü vardır.
- **TA39.** Ömür üstel dağılımdan çekilir; ortalamalar türe göre 6, 3 ve 21 gündür. Bu sayılar
  **model verisidir**.
- **TA40.** Bir adres göstergesinin ömrü dolduğunda değer başka bir yere **yeniden atanabilir**.
  Model bu olasılığı adreste 0,55, adda 0,10 ve dosya karmasında 0 alır.
- **TA41.** Davranış tanımı 12 kalemdir ve ömrü ay ölçüsündedir. Yeniden atanma söz konusu değildir,
  çünkü tarif edilen şey bir değer değil bir yöntemdir.
- **TA42.** Altmış kurgu temas olayı bir göstergeye ve bir güne bağlıdır. Temasların yüzde 15'inin
  hiçbir davranış tanımı yoktur.

## Göstergenin Ömrü

```js
// besleme.mjs — gosterge beslemesinin omru ve 90 gunluk pencerede eslesme. MODELDIR.
// Besleme saglayicisi, kaynak ya da kampanya adi YOKTUR; turler kurgudur.
export const TOHUM = 20260408;
const uretec = (t) => { let s = t >>> 0;
  return () => (s = (s * 1664525 + 1013904223) >>> 0) / 4294967296; };
const r = uretec(TOHUM);
const tam = (n) => Math.floor(r() * n);
export const GUN = 90;

// [tur, kalem sayisi, ortalama omur gun, omru dolunca yeniden atanma olasiligi]
const TUR = [["adres", 420, 6, 0.55], ["dosya karmasi", 380, 3, 0], ["ad", 100, 21, 0.1]];
export const GOSTERGE = [];
for (const [tur, n, omur, atanma] of TUR)
  for (let k = 0; k < n; k++)
    GOSTERGE.push({ tur, eklendi: tam(GUN), omur: Math.max(1, Math.round(-omur * Math.log(1 - r()))),
      atanir: r() < atanma });

// Davranis tanimi: bir yontemi tarif eder, tek bir degeri degil. Omru ay olcusundedir.
export const DAVRANIS = Array.from({ length: 12 }, (_, i) => ({
  id: `d${i + 1}`, eklendi: tam(GUN), omur: 120 + tam(420), kapsam: 30 + tam(60) }));

// Kurgu temas olaylari: her biri bir gostergeye ve bir gune baglidir.
export const TEMAS = Array.from({ length: 60 }, () => ({
  gun: tam(GUN), g: tam(GOSTERGE.length),
  d: r() < 0.85 ? tam(DAVRANIS.length) : -1 }));   // yuzde 15'inin davranis tanimi yok

export const gecerli = (x, gun) => gun >= x.eklendi && gun <= x.eklendi + x.omur;
const ortanca = (v) => v.slice().sort((a, b) => a - b)[Math.floor(v.length / 2)];

if (import.meta.url === `file://${process.argv[1]}`) {
  const gen = (B) => (h) => h.map((v, j) => (j ? String(v).padStart(B[j])
    : String(v).padEnd(B[0]))).join("");
  const yt = gen([16, 9, 13, 14, 16]);
  console.log(`model (tohum ${TOHUM}): ${GOSTERGE.length} gosterge, ${DAVRANIS.length} davranis ` +
    `tanimi, ${GUN} gunluk pencere, ${TEMAS.length} kurgu temas`);
  console.log();
  console.log(yt(["tur", "kalem", "medyan omur", "ort. omur", "yeniden atanan"]));
  for (const [tur] of TUR) {
    const l = GOSTERGE.filter((g) => g.tur === tur);
    console.log(yt([tur, l.length, `${ortanca(l.map((g) => g.omur))} gun`,
      `${(l.reduce((a, g) => a + g.omur, 0) / l.length).toFixed(1)} gun`,
      l.filter((g) => g.atanir).length]));
  }
  console.log(yt(["davranis tanimi", DAVRANIS.length, `${ortanca(DAVRANIS.map((d) => d.omur))} gun`,
    `${(DAVRANIS.reduce((a, d) => a + d.omur, 0) / DAVRANIS.length).toFixed(1)} gun`, 0]));

  const yo = gen([16, 10, 16, 10, 13]);
  console.log();
  console.log(yo(["omur araligi", "adres", "dosya karmasi", "ad", "toplam pay"]));
  for (const [alt, ust] of [[1, 2], [3, 7], [8, 14], [15, 30], [31, 9999]]) {
    const ic = (l) => l.filter((g) => g.omur >= alt && g.omur <= ust).length;
    const hep = ic(GOSTERGE);
    console.log(yo([ust > 999 ? `${alt}+ gun` : `${alt}-${ust} gun`,
      ic(GOSTERGE.filter((g) => g.tur === "adres")),
      ic(GOSTERGE.filter((g) => g.tur === "dosya karmasi")),
      ic(GOSTERGE.filter((g) => g.tur === "ad")),
      `%${(100 * hep / GOSTERGE.length).toFixed(1)}`]));
  }

  const yg = gen([8, 12, 15, 12, 18]);
  console.log();
  console.log(yg(["gun", "eklenmis", "gecerli gost.", "olu gost.", "gecerli davranis"]));
  for (const g of [0, 15, 30, 45, 60, 89]) {
    const ge = GOSTERGE.filter((x) => gecerli(x, g)).length;
    const ek = GOSTERGE.filter((x) => x.eklendi <= g).length;
    console.log(yg([g, ek, ge, ek - ge, DAVRANIS.filter((x) => gecerli(x, g)).length]));
  }
  const yakalanan = TEMAS.filter((t) => gecerli(GOSTERGE[t.g], t.gun));
  const erken = TEMAS.filter((t) => t.gun < GOSTERGE[t.g].eklendi);
  console.log(`\n${TEMAS.length} temasin ${yakalanan.length} tanesi gosterge listesiyle ` +
    `eslesiyor; ${erken.length} tanesinde gosterge o gun listede henuz yok, ` +
    `${TEMAS.length - yakalanan.length - erken.length} tanesinde gostergenin omru dolmus`);
}
```

```
model (tohum 20260408): 900 gosterge, 12 davranis tanimi, 90 gunluk pencere, 60 kurgu temas

tur                 kalem  medyan omur     ort. omur  yeniden atanan
adres                 420        5 gun       6.6 gun             239
dosya karmasi         380        2 gun       3.0 gun               0
ad                    100       15 gun      22.5 gun              11
davranis tanimi        12      358 gun     317.4 gun               0

omur araligi         adres   dosya karmasi        ad   toplam pay
1-2 gun                126             220        15        %40.1
3-7 gun                156             129        16        %33.4
8-14 gun                96              31        18        %16.1
15-30 gun               38               0        28         %7.3
31+ gun                  4               0        23         %3.0

gun         eklenmis  gecerli gost.   olu gost.  gecerli davranis
0                  9              9           0                 0
15               142             58          84                 3
30               285             77         208                 4
45               455             77         378                 6
60               622             73         549                 8
89               900             72         828                12

60 temasin 5 tanesi gosterge listesiyle eslesiyor; 28 tanesinde gosterge o gun listede henuz yok, 27 tanesinde gostergenin omru dolmus
```

İlk tablo ömür farkını doğrudan veriyor: dosya karmasının medyan ömrü iki gün, adresin beş gün,
adın on beş gün. Davranış tanımının medyan ömrü 358 gündür — aynı eksende yaklaşık **yetmiş kat**
uzun. Bu, davranış tanımının daha iyi olduğu anlamına gelmez; iki kalemin **aynı listede aynı
işlemle** yönetilemeyeceği anlamına gelir.

Ömür dağılımı tablosu ortalamanın gizlediğini açıyor. Beslemenin yüzde 40'ı bir ya da iki gün
içinde ölüyor ve bu bölümün büyük çoğunluğu dosya karmasıdır: 380 karmanın 220'si iki günden kısa
ömürlüdür ve hiçbiri on beş günü geçmez. Adlar ters uçtadır — 100 adın 51'i on beş günden uzun
yaşar. Üç tür aynı listede taşınırsa, listenin tamamı için tek bir saklama süresi seçmek üç türden
en az ikisini yanlış yönetir.

Dağılımın bu biçimi bir işlem kararına da bağlanır: kalemlerin yüzde 73'ü bir haftadan kısa ömürlü
olduğu için beslemeyi günde bir kez almak, kalemlerin önemli bir bölümünü **hiç geçerli olmadığı bir
anda** listeye eklemek demektir. Beslemenin alınma sıklığı, kalemin ömrüyle aynı ölçekte olmadıkça,
liste boyutu artar ama kapsama artmaz.

İkinci tablo listenin nasıl davrandığını gösteriyor. Doksanıncı günde 900 göstergenin tamamı
eklenmiştir ama yalnız 72'si geçerlidir; 828'i ölüdür. Liste doğrusal büyür, geçerli bölümü ise
otuzuncu günden sonra 72–77 arasında **düz kalır**. Bir gösterge beslemesinin boyutu onun gücüyle
ilgili bir sayı değildir; güç, o listede o gün hâlâ geçerli olan kalem sayısıdır.

Son satır ilk sonucu veriyor: 60 temasın yalnız 5'i gösterge listesiyle eşleşiyor. Kaçırmanın iki
nedeni neredeyse eşit paylaşıyor — 28 temasta gösterge o gün listede **henüz yoktur**, 27 temasta
ömrü **dolmuştur**. Birinci sayı beslemenin gecikmesini, ikinci sayı göstergenin kısa ömrünü ölçer
ve ikisi ayrı işlerdir: birincisi daha hızlı besleme, ikincisi daha uzun ömürlü bir ölçüt ister.

## Saklama Süresi ve Davranışla Karşılaştırma

```js
// omur.mjs — saklama suresi taramasi, olu gostergenin yanlis pozitifi ve davranisla karsilastirma.
import { GOSTERGE, DAVRANIS, TEMAS, GUN, gecerli } from "./besleme.mjs";

const uretec = (t) => { let s = t >>> 0;
  return () => (s = (s * 1664525 + 1013904223) >>> 0) / 4294967296; };
const INCELEME = 9, BAKIM_KALEM = 0.2, BAKIM_DAVRANIS = 30;

// Bir gosterge listede eklendi..eklendi+S gunleri arasinda tutulur.
// Omru dolduktan sonra listede kalirsa ve deger yeniden atanmissa mesru trafikle eslesir.
function tarama(S) {
  const r = uretec(4413571);
  let yp = 0, liste = 0;
  for (const g of GOSTERGE) {
    liste += Math.min(S, GUN - g.eklendi);
    for (let d = g.eklendi + g.omur + 1; d <= Math.min(g.eklendi + S, GUN - 1); d++)
      if (g.atanir && r() < 0.02) yp++;
  }
  const yakalanan = TEMAS.filter((t) => {
    const g = GOSTERGE[t.g];
    return t.gun >= g.eklendi && t.gun <= g.eklendi + Math.min(S, g.omur);
  }).length;
  return { liste: Math.round(liste / GUN), yakalanan, yp,
    bakim: Math.round(GOSTERGE.length * BAKIM_KALEM) };
}

const gen = (B) => (h) => h.map((v, j) => (j ? String(v).padStart(B[j])
  : String(v).padEnd(B[0]))).join("");
const yz = gen([24, 14, 16, 16, 14, 13]);
console.log(yz(["besleme / saklama", "liste boyu", "yakalanan temas", "olu eslesme",
  "inceleme dk", "bakim dk"]));
for (const S of [3, 7, 14, 30, 90]) {
  const t = tarama(S);
  console.log(yz([`gosterge, ${S} gun`, t.liste, `${t.yakalanan}/${TEMAS.length}`, t.yp,
    (t.yakalanan + t.yp) * INCELEME, t.bakim]));
}
const dav = TEMAS.filter((t) => t.d >= 0 && gecerli(DAVRANIS[t.d], t.gun)).length;
const tanimsiz = TEMAS.filter((t) => t.d < 0).length;
console.log(yz(["davranis tanimi", DAVRANIS.length, `${dav}/${TEMAS.length}`, 0,
  dav * INCELEME, DAVRANIS.length * BAKIM_DAVRANIS]));

const en = [3, 7, 14, 30, 90].map(tarama);
console.log(`\ngosterge listesinde saklama 3 gunden 90 gune cikinca yakalanan ` +
  `${en[0].yakalanan} -> ${en[4].yakalanan}, olu eslesme ${en[0].yp} -> ${en[4].yp}`);
console.log(`${TEMAS.length} temasin ${tanimsiz} tanesinin davranis tanimi hic yok; ` +
  `${TEMAS.length - dav - tanimsiz} tanesinde tanim var ama temas gununde henuz eklenmemis`);
const kalemBasi = (n, k) => (n / k * 1000).toFixed(1);
console.log(`kalem basina yakalama (binde): gosterge ` +
  `${kalemBasi(en[4].yakalanan, GOSTERGE.length)}, davranis ` +
  `${kalemBasi(dav, DAVRANIS.length)}`);
```

```
besleme / saklama           liste boyu yakalanan temas     olu eslesme   inceleme dk     bakim dk
gosterge, 3 gun                     30            2/60               2            36          180
gosterge, 7 gun                     68            4/60              13           153          180
gosterge, 14 gun                   131            4/60              45           441          180
gosterge, 30 gun                   255            5/60             101           954          180
gosterge, 90 gun                   451            5/60             190          1755          180
davranis tanimi                     12           27/60               0           243          360

gosterge listesinde saklama 3 gunden 90 gune cikinca yakalanan 2 -> 5, olu eslesme 2 -> 190
60 temasin 10 tanesinin davranis tanimi hic yok; 23 tanesinde tanim var ama temas gununde henuz eklenmemis
kalem basina yakalama (binde): gosterge 5.6, davranis 2250.0
```

Saklama taraması beşinci dersin eğrisini başka bir eksende tekrarlıyor. Saklamayı üç günden doksan
güne çıkarmak yakalananı 2'den 5'e taşıyor; aynı adımda ölü eşleşme 2'den 190'a, inceleme yükü 36
dakikadan 1.755 dakikaya çıkıyor. **Üç ek yakalama için 188 ek yanlış eşleşme** ödeniyor ve bunun
tamamı, ömrü dolmuş adres göstergelerinin yeniden atanmış değerlerle çakışmasından gelir. Bu satır
şunu söyler: bir gösterge listesinin en pahalı bölümü, temizlenmemiş bölümüdür.

On dört ile otuz gün arasında yakalanan sabit kalıyor ama ölü eşleşme 45'ten 101'e çıkıyor. Bu
aralıkta saklamayı uzatmak **hiçbir şey kazandırmaz** ve maliyeti iki katına çıkarır. Bir beslemenin
saklama süresi, beslemenin ömür dağılımından okunur; kalemlerin çoğu bir haftada ölüyorsa listeyi
otuz gün tutmanın karşılığı yoktur. Liste boyu sütunu aynı şeyi başka bir birimle söylüyor: üç
günlük saklamada ortalama liste 30 kalem, doksan günlükte 451 kalemdir ve bu on beş katlık büyüme
karşılığında yakalanan yalnız 2'den 5'e çıkar.

Davranış satırı ölçünün asıl sonucudur. On iki kalem 27 temas yakalıyor, ölü eşleşme üretmiyor ve
243 dakika inceleme istiyor — 900 kalemlik gösterge listesi 5 temas yakalayıp 1.755 dakika
istiyordu. Kalem başına yakalama binde 5,6'ya karşı binde 2.250'dir. Bakım dakikası davranış
tarafında daha yüksektir (360'a karşı 180), çünkü bir davranış tanımını gözden geçirmek bir değeri
listeden silmekten çok daha uzun sürer; ama o bakım **on iki kalem içindir**, dokuz yüz için değil.

Bu karşılaştırma iki beslemenin birbirinin yerine geçtiği anlamına gelmez. Gösterge, eşleştiğinde
**kesin** bir eşleşmedir: bir değer ya listede vardır ya yoktur ve inceleme birkaç dakikada biter.
Davranış tanımı bir tarif olduğu için eşleşmesi de bir yorum gerektirir ve bu dersin modelinde
inceleme süresi ikisi için de eşit alınmıştır — gerçekte davranış eşleşmesinin incelemesi daha
uzundur. Ölçünün söylediği şey şudur: **aynı bakım dakikası davranış tarafında daha çok temas
karşılar** ve gösterge tarafı ancak beslemenin gecikmesi ömürden kısa olduğunda işe yarar.

Davranış tarafının da kaçırdığı vardır ve son satır onu yazıyor: 60 temasın 10'unun hiçbir davranış
tanımı yoktur, 23'ünde tanım vardır ama temas gününde henüz eklenmemiştir. İkinci sayı gösterge
tarafındaki gecikmenin karşılığıdır ve davranış tanımları daha yavaş yazıldığı için orada daha
büyüktür. Bir davranış tanımı uzun ömürlüdür, ama **geç doğar**.

## Özet

- Gösterge ömrü gün, davranış tanımı ömrü ay ölçüsündedir: medyan 2–15 güne karşı 358 gün; ikisi
  aynı listede aynı işlemle yönetilemez.
- Doksanıncı günde eklenmiş 900 göstergenin yalnız 72'si geçerlidir; liste doğrusal büyürken geçerli
  bölümü otuzuncu günden sonra düz kalır.
- 60 temasın yalnız 5'i gösterge listesiyle eşleşiyor; 28'inde gösterge henüz eklenmemiş, 27'sinde
  ömrü dolmuştur ve bu iki neden iki ayrı iş gerektirir.
- Saklamayı 3 günden 90 güne çıkarmak yakalananı 2'den 5'e taşırken ölü eşleşmeyi 2'den 190'a,
  incelemeyi 36 dakikadan 1.755 dakikaya çıkarıyor; 14 ile 30 gün arasında yakalanan hiç artmıyor.
- On iki davranış tanımı 27 temas yakalıyor ve ölü eşleşme üretmiyor; kalem başına yakalama binde
  5,6'ya karşı binde 2.250'dir.
- Davranış tanımı geç doğar: 60 temasın 23'ünde tanım vardır ama temas gününde henüz eklenmemiştir,
  10'unun hiçbir tanımı yoktur.

## Sonraki Adım

Sekiz ders boyunca hattın her adımı sayıldı: kaynaklar birleştirildi, kurallar yazıldı, eşik seçildi,
hipotez koşturuldu ve dışarıdan gelen bilgi ömür ekseninde ayrıldı. Ortaya çıkan sayıların hepsi aynı
yere bakıyor — analist dakikası. Sekizinci derste doksan günlük saklama 1.755 dakika, altıncı derste
ikinci sürüm günde 513 dakika istedi ve birinci derste günlük kapasite 1.440 dakikaydı. Bu derslerin
hiçbirinde uyarının **doğru** çıkmasından sonrası ele alınmadı. Sonraki ders konuyu kapatır ve
yinelenen müdahalenin otomatikleştirilmesini iki sayıyla birlikte ölçer: kazanılan dakika ve yanlış
otomatik eylemin bedeli.
