---
title: 'Yapı ve Kayıt İncelemesi'
source: 'https://academia.sh/tr/kurslar/guvenlik-operasyonlari/yapi-ve-kayit-incelemesi'
course: 'Güvenlik Operasyonları ve Olay Müdahalesi'
language: tr
updated: '2026-08-17T18:08:42+00:00'
license: 'CC BY-SA 4.0'
---

# Yapı ve Kayıt İncelemesi

Sistem yapılarından çıkan izin kanıt değerinin ölçülmesi: 12 yapının 7'si doğrudan, 5'i çıkarım sınıfındadır ve tabanları 268 makinelik kurgu filoda 4 ile 187 arasında değişir. Yedi iddianın 2'si ayırt edici, 4'ü zayıf, 1'i gürültüdür; tek yapıya dayanan iddia 187 temiz makinede de doğrudur. Üç dayanağı olan bir iddia, üçü de çıkarım sınıfındaysa iki dayanaklı bir iddiadan daha zayıf çıkıyor ve bağımsızlık varsayımı hesabı alt sınır yapıyor.

Bir önceki ders olayları hazır **kayıt** olarak aldı: her birinin bir türü, bir kaynağı ve bir
zamanı vardı. Bir incelemede toplanan izin önemli bir bölümü böyle hazır gelmez. Sistem kendi
işleyişi için tuttuğu yapılara yazar — bir yapılandırma deposu girdisi, bir dosya sistemi meta veri
kaydı, bir kısayol, bir önbellek girdisi. Bunların hiçbiri günlük olsun diye yazılmamıştır, ama
sıralanabilir ve okunabilir bir iz bırakır.

Bu ders o izleri **kanıt değeri** cinsinden ele alır ve ölçü birimi bir orandır: aynı izi taşıyan
temiz makine sayısı. Bir iz ne kadar seyrekse iddiayı o kadar ayırt eder; bir iz makinelerin
çoğunda zaten varsa iddiayı hiç ayırt etmez. Rapora giren cümlelerin çoğu bu ikisi arasında bir
yerde durur ve nerede durduğu yazılmadıkça okunamaz. Filo, taban sayıları ve iddia listesi
**kurgudur**.

- **AI25.** **Sistem yapısı**, olay kaydı olarak tutulmayan ama sistemin işleyişi gereği iz bırakan
  bir veri yapısıdır.
- **AI26.** Bir yapı **doğrudan** sınıftadır ancak yalnız iddia edilen olay gerçekleştiği için
  oluşuyorsa. Başka nedenlerle de oluşabiliyorsa **çıkarım** sınıfındadır.
- **AI27.** **Taban**, aynı izi taşıyan temiz makine sayısıdır. Kurgu filo 268 makinedir; taban
  değerleri elle verilmiştir, gerçek bir filo taranmadı.
- **AI28.** Bir iddianın **ayırt ediciliği**, aynı iz birleşimini taşıması beklenen temiz makine
  sayısıdır. Bir'in altı ayırt edici, bir ile on arası zayıf, onun üstü gürültüdür.
- **AI29.** Beklenen sayı, izlerin birbirinden **bağımsız** olduğu varsayımıyla hesaplanır. Bu
  varsayım gerçekte tutmaz; hesap bu yüzden bir **alt sınırdır**.
- **AI30.** Yapıların olay makinesinde bulunduğu verilidir. Bu ders bulmayı değil, bulunanın
  değerini ölçer.

## Yapı, Soru ve Taban

```js
// adli/yapi.mjs — sistem yapilarindan cikan izler ve filo tabani MODELIDIR.
// Taban sayilari elle verilmis kurgu degerlerdir; gercek bir filo taranmadi.

export const FILO = 268;                    // temiz kabul edilen makine sayisi

// yapi -> [sinif, temiz filoda ayni izi tasiyan makine, yanit verdigi soru]
export const YAPI = {
  "silinmis-dosya-adi": ["dogrudan", 4, "dosya bu makinede vardi"],
  "cop-kutusu-ustverisi": ["dogrudan", 47, "dosya silindi"],
  "uygulama-onbellegi": ["dogrudan", 9, "ikili calistirildi"],
  "zamanlanmis-gorev-tanimi": ["dogrudan", 6, "kalem otomatik calisiyor"],
  "yapilandirma-deposu-girdisi": ["dogrudan", 12, "kalem acilista calisiyor"],
  "tasinabilir-ortam-kaydi": ["dogrudan", 22, "ortam bu makineye baglandi"],
  "kurulum-kaydi": ["dogrudan", 63, "yazilim kuruldu"],
  "kisayol-kaydi": ["cikarim", 31, "dosyaya erisildi"],
  "son-kullanilanlar-listesi": ["cikarim", 58, "dosya listelendi"],
  "dosya-zaman-damgasi": ["cikarim", 96, "dosya pencerede degisti"],
  "paylasim-dizin-girdisi": ["cikarim", 74, "ag paylasimina baglanildi"],
  "kullanici-profili-damgasi": ["cikarim", 187, "kullanici oturum acti"],
};

// Iddia -> dayandigi yapilar. Iddialar rapora girmesi dusunulen cumlelerdir.
export const IDDIA = {
  "dosya makinede vardi ve silindi": ["silinmis-dosya-adi", "cop-kutusu-ustverisi"],
  "kalem her acilista calisiyor": ["yapilandirma-deposu-girdisi", "zamanlanmis-gorev-tanimi"],
  "ikili bu makinede calistirildi": ["uygulama-onbellegi", "kisayol-kaydi"],
  "veri tasinabilir ortama kopyalandi": ["tasinabilir-ortam-kaydi", "dosya-zaman-damgasi",
    "son-kullanilanlar-listesi"],
  "yazilim makineye kuruldu": ["kurulum-kaydi", "uygulama-onbellegi"],
  "dosyayi bir kullanici acti": ["son-kullanilanlar-listesi", "kisayol-kaydi",
    "kullanici-profili-damgasi"],
  "su kullanici o anda oturumdaydi": ["kullanici-profili-damgasi"],
};

// Ayni iz birlesimini tasiyan temiz makine beklentisi (izler bagimsiz varsayilir).
export const beklenen = (dayanak) =>
  FILO * dayanak.reduce((a, y) => a * YAPI[y][1] / FILO, 1);
export const dogrudanSayisi = (dayanak) =>
  dayanak.filter((y) => YAPI[y][0] === "dogrudan").length;
export const sinifla = (b) => (b < 1 ? "ayirt edici" : b < 10 ? "zayif" : "gurultu");
```

Tablodaki üçüncü alan her yapının **yanıt verdiği soruyu** taşıyor ve bu alan iddia yazarken en çok
karıştırılan yerdir. Silinmiş dosya adı kaydı "dosya bu makinede vardı" sorusunu yanıtlar,
"dosyayı kim getirdi" sorusunu değil. Çöp kutusu üst verisi "dosya silindi" der, "dosya gizlendi"
demez. Uygulama önbelleği "ikili çalıştırıldı" der, "ikili şunu yaptı" demez. Bir yapıdan onun
yanıtladığı sorunun ötesine geçen her cümle, dayanağı olmayan bir genişletmedir ve tabloda hiçbir
sütuna yazılamaz.

İki sınıf arasındaki fark ise yapının **ne zaman oluştuğuna** bakar. Bir uygulama önbelleği girdisi,
ikili çalıştırılmadıysa oluşmaz; girdinin varlığı çalıştırmayı doğrudan gösterir. Bir dosya zaman
damgası ise dosya değiştiğinde de, kopyalandığında da, yedekten döndüğünde de değişir; damganın
olay penceresine düşmesi bir çıkarımdır. Aynı ayrım kısayol kaydı için de geçerlidir: kısayol,
kullanıcı dosyayı açtığında da, bir betik ona dokunduğunda da oluşabilir.

## İddianın Ayırt Ediciliği

```js
// adli/deger.mjs — yapi basina taban, iddia basina ayirt edicilik ve tek yapiya baglilik.
import { FILO, YAPI, IDDIA, beklenen, dogrudanSayisi, sinifla } from "./yapi.mjs";

const y = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join("").trimEnd());
const yapilar = Object.keys(YAPI), iddialar = Object.keys(IDDIA);

console.log(`model: ${yapilar.length} yapi, ${iddialar.length} iddia, ${FILO} makinelik temiz ` +
  `filo; ${yapilar.filter((k) => YAPI[k][0] === "dogrudan").length} yapi dogrudan, ` +
  `${yapilar.filter((k) => YAPI[k][0] === "cikarim").length} yapi cikarim`);

const A = [-28, -10, 8, 7, 16];
console.log("");
y(A, "yapi", "sinif", "taban", "oran", "dayanan iddia");
for (const k of yapilar)
  y(A, k, YAPI[k][0], YAPI[k][1], `%${Math.round(YAPI[k][1] * 100 / FILO)}`,
    iddialar.filter((i) => IDDIA[i].includes(k)).length);

const B = [-36, 8, 10, 15, 14];
console.log("");
y(B, "iddia", "dayanak", "dogrudan", "temiz makine", "sonuc");
for (const i of iddialar) {
  const b = beklenen(IDDIA[i]);
  y(B, i, IDDIA[i].length, dogrudanSayisi(IDDIA[i]), b.toFixed(2), sinifla(b));
}

const kanitsiz = iddialar.filter((i) => dogrudanSayisi(IDDIA[i]) === 0);
console.log(`\ndogrudan dayanagi olmayan iddia: ${kanitsiz.length} (${kanitsiz.join("; ")})`);
console.log(`ayirt edici ${iddialar.filter((i) => beklenen(IDDIA[i]) < 1).length}, ` +
  `zayif ${iddialar.filter((i) => sinifla(beklenen(IDDIA[i])) === "zayif").length}, ` +
  `gurultu ${iddialar.filter((i) => sinifla(beklenen(IDDIA[i])) === "gurultu").length}`);

// Tek yapiya baglilik: bir yapi silinirse hangi iddia sinif degistiriyor.
console.log("");
const C = [-28, 12, 19, 14];
y(C, "yapi silinirse", "etkilenen", "dayanaksiz kalan", "sinif dusen");
for (const k of yapilar) {
  const et = iddialar.filter((i) => IDDIA[i].includes(k));
  if (!et.length) continue;
  const bos = et.filter((i) => IDDIA[i].length === 1);
  const dus = et.filter((i) => IDDIA[i].length > 1 &&
    sinifla(beklenen(IDDIA[i].filter((z) => z !== k))) !== sinifla(beklenen(IDDIA[i])));
  y(C, k, et.length, bos.length, dus.length);
}
```

```
model: 12 yapi, 7 iddia, 268 makinelik temiz filo; 7 yapi dogrudan, 5 yapi cikarim

yapi                        sinif        taban   oran   dayanan iddia
silinmis-dosya-adi          dogrudan         4     %1               1
cop-kutusu-ustverisi        dogrudan        47    %18               1
uygulama-onbellegi          dogrudan         9     %3               2
zamanlanmis-gorev-tanimi    dogrudan         6     %2               1
yapilandirma-deposu-girdisi dogrudan        12     %4               1
tasinabilir-ortam-kaydi     dogrudan        22     %8               1
kurulum-kaydi               dogrudan        63    %24               1
kisayol-kaydi               cikarim         31    %12               2
son-kullanilanlar-listesi   cikarim         58    %22               2
dosya-zaman-damgasi         cikarim         96    %36               1
paylasim-dizin-girdisi      cikarim         74    %28               0
kullanici-profili-damgasi   cikarim        187    %70               2

iddia                                dayanak  dogrudan   temiz makine         sonuc
dosya makinede vardi ve silindi            2         2           0.70   ayirt edici
kalem her acilista calisiyor               2         2           0.27   ayirt edici
ikili bu makinede calistirildi             2         1           1.04         zayif
veri tasinabilir ortama kopyalandi         3         1           1.71         zayif
yazilim makineye kuruldu                   2         2           2.12         zayif
dosyayi bir kullanici acti                 3         0           4.68         zayif
su kullanici o anda oturumdaydi            1         0         187.00       gurultu

dogrudan dayanagi olmayan iddia: 2 (dosyayi bir kullanici acti; su kullanici o anda oturumdaydi)
ayirt edici 2, zayif 4, gurultu 1

yapi silinirse                 etkilenen   dayanaksiz kalan   sinif dusen
silinmis-dosya-adi                     1                  0             1
cop-kutusu-ustverisi                   1                  0             1
uygulama-onbellegi                     2                  0             2
zamanlanmis-gorev-tanimi               1                  0             1
yapilandirma-deposu-girdisi            1                  0             1
tasinabilir-ortam-kaydi                1                  0             1
kurulum-kaydi                          1                  0             0
kisayol-kaydi                          2                  0             1
son-kullanilanlar-listesi              2                  0             1
dosya-zaman-damgasi                    1                  0             0
kullanici-profili-damgasi              2                  1             0
```

Son sütun 0,27'den 187'ye uzanıyor ve bu aralık dersin sonucudur. En altta duran cümle — "şu
kullanıcı o anda oturumdaydı" — tek bir yapıya dayanıyor ve o yapının tabanı 268 makinenin
**187'sidir**. Cümle büyük olasılıkla doğrudur ve hiçbir şey ayırt etmez: filodaki her on makinenin
yedisinde aynı iz vardır. Bir iddianın doğru olması ile bir şey göstermesi ayrı niteliklerdir ve
raporda ancak ikincisi iş görür.

Dördüncü ve altıncı satırlar birlikte okunmalıdır. "Veri taşınabilir ortama kopyalandı" üç
dayanağa oturuyor ve beklenen sayısı 1,71; "dosyayı bir kullanıcı açtı" da üç dayanağa oturuyor ve
beklenen sayısı 4,68. Aradaki farkı yapan dayanak sayısı değil, dayanakların **sınıfıdır**:
birincisinde taşınabilir ortam kaydı doğrudan sınıftadır ve tabanı yüzde 8'dir; ikincisinin üç
dayanağı da çıkarımdır ve en zayıfının tabanı yüzde 70. **Dayanak eklemek ayırt ediciliği
artırmaz; seyrek dayanak eklemek artırır.**

Bağımsızlık varsayımı burada ayrıca yazılmalıdır. Çarpım, izlerin birbirinden bağımsız oluştuğunu
kabul eder. Gerçekte kısayol kaydı ile son kullanılanlar listesi çoğu zaman aynı eylemden doğar;
biri varsa ötekinin de bulunma olasılığı çarpımın verdiğinden yüksektir. Yani gerçek sayı
hesaplanandan **büyüktür** ve tabloda okunan 4,68 bir alt sınırdır. Bağımsızlık varsayımı her zaman
iddiayı olduğundan güçlü gösterir; bunun yazılmadığı bir çözümleme kendi lehine yanlıdır.

Üçüncü tablo bir yapının kaybının bedelini sayıyor. Uygulama önbelleği iki iddiaya dayanaktır ve
kaybı **iki iddianın da sınıfını düşürür**; en pahalı tek yapı odur. Kullanıcı profili damgası da
iki iddiaya dayanaktır ama kaybı hiçbir sınıf düşürmez — biri zaten gürültüdür, ötekisi onsuz da
aynı sınıfta kalır. İki yapı aynı sayıda iddiaya dayanak olabilir ve taşıdıkları ağırlık taban
farkı kadar farklıdır.

Tablodaki en sessiz satır **paylaşım dizin girdisidir**: bulunmuştur, sınıflandırılmıştır ve hiçbir
iddiaya dayanak değildir. Toplanan iz ile kullanılan iz aynı küme değildir ve aradaki fark, raporun
uzunluğuyla değeri arasındaki farkın kaynağıdır.

## Yapının Ömrü ve Gecikmenin Bedeli

```js
// adli/omur.mjs — yapinin uzerine yazilma suresi ve gecikmenin iddialara etkisi.
import { FILO, YAPI, IDDIA, beklenen, sinifla } from "./yapi.mjs";

const y = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join("").trimEnd());

// yapi -> [tuttugu girdi sayisi, olagan kullanimda gunde eklenen girdi]  0 = uzerine yazilmaz
const DONGU = {
  "silinmis-dosya-adi": [2400, 180], "cop-kutusu-ustverisi": [500, 12],
  "uygulama-onbellegi": [1024, 96], "zamanlanmis-gorev-tanimi": [1, 0],
  "yapilandirma-deposu-girdisi": [1, 0], "tasinabilir-ortam-kaydi": [64, 3],
  "kurulum-kaydi": [1, 0], "kisayol-kaydi": [149, 22],
  "son-kullanilanlar-listesi": [20, 14], "dosya-zaman-damgasi": [1, 0.35],
  "paylasim-dizin-girdisi": [32, 9], "kullanici-profili-damgasi": [1, 1],
};
const omur = (k) => (DONGU[k][1] ? DONGU[k][0] / DONGU[k][1] : Infinity);
const okunur = (k, gun) => gun <= omur(k);

const A = [-28, 10, 10, 12, 10];
y(A, "yapi", "girdi", "gunluk", "omur gun", "taban");
for (const k of Object.keys(YAPI))
  y(A, k, DONGU[k][0], DONGU[k][1], DONGU[k][1] ? omur(k).toFixed(1) : "surekli", YAPI[k][1]);

const B = [-10, 14, 14, 8, 10, 14];
console.log("");
y(B, "gecikme", "okunur yapi", "ayirt edici", "zayif", "gurultu", "dayanaksiz");
for (const gun of [1, 3, 7, 14, 30, 90]) {
  const kalan = Object.fromEntries(Object.keys(IDDIA).map((i) =>
    [i, IDDIA[i].filter((k) => okunur(k, gun))]));
  const say = (s) => Object.values(kalan).filter((d) => d.length && sinifla(beklenen(d)) === s).length;
  y(B, `${gun} gun`, Object.keys(YAPI).filter((k) => okunur(k, gun)).length,
    say("ayirt edici"), say("zayif"), say("gurultu"),
    Object.values(kalan).filter((d) => !d.length).length);
}
const kalici = Object.keys(YAPI).filter((k) => omur(k) === Infinity);
console.log(`\n${Object.keys(YAPI).length} yapinin ${kalici.length}'i uzerine yazilmiyor; ` +
  `filo ${FILO} makine, taban degerleri degismiyor`);
```

```
yapi                             girdi    gunluk    omur gun     taban
silinmis-dosya-adi                2400       180        13.3         4
cop-kutusu-ustverisi               500        12        41.7        47
uygulama-onbellegi                1024        96        10.7         9
zamanlanmis-gorev-tanimi             1         0     surekli         6
yapilandirma-deposu-girdisi          1         0     surekli        12
tasinabilir-ortam-kaydi             64         3        21.3        22
kurulum-kaydi                        1         0     surekli        63
kisayol-kaydi                      149        22         6.8        31
son-kullanilanlar-listesi           20        14         1.4        58
dosya-zaman-damgasi                  1      0.35         2.9        96
paylasim-dizin-girdisi              32         9         3.6        74
kullanici-profili-damgasi            1         1         1.0       187

gecikme      okunur yapi   ayirt edici   zayif   gurultu    dayanaksiz
1 gun                 12             2       4         1             0
3 gun                  9             2       2         2             1
7 gun                  7             2       2         1             2
14 gun                 5             1       0         3             3
30 gun                 4             1       0         2             4
90 gun                 3             1       0         1             5

12 yapinin 3'i uzerine yazilmiyor; filo 268 makine, taban degerleri degismiyor
```

Yapıların çoğu **döngüseldir**: sabit sayıda girdi tutar ve yenisi geldiğinde en eskisini atar.
Ömür bu iki sayının oranıdır ve tabloda bir günden sürekliye uzanıyor. Üç yapı hiç üzerine
yazılmıyor; bunlar tanım kayıtlarıdır, silinmedikçe durur.

Birinci tablonun iki sütunu birlikte okunduğunda ters bir bağ çıkıyor. En kısa ömürlü iki yapı —
kullanıcı profili damgası ve son kullanılanlar listesi — aynı zamanda en yüksek tabanlı iki
yapıdır. Bir yapıya ne kadar sık yazılıyorsa hem o kadar çabuk üzerine yazılır hem de temiz
makinelerin o kadar çoğunda bulunur. Hızlı kaybolan iz, kaybolmasa bile en az ayırt eden izdir.

İkinci tablo kursun ölçü eksenini bu derse taşıyor. Gecikme bir günden doksan güne çıkarken
okunabilir yapı sayısı 12'den 3'e, dayanaksız kalan iddia sayısı 0'dan **5'e** gidiyor. İddia
sayısı hiç değişmiyor; değişen tek şey, o iddiaları taşıyan yapıların hâlâ orada olup olmadığıdır.

On dördüncü günün satırı ayrıca dikkat ister: zayıf sınıftaki iddia sayısı **sıfırdır**. İddialar
iyileşmiş değildir; aradaki dayanakları taşıyan yapılar döngüde silindiği için iddialar iki uca
savrulmuştur — ya sürekli yapılara dayanıp ayırt edici kalmışlardır ya da yalnız yüksek tabanlı bir
yapıya kalıp gürültüye düşmüşlerdir. **Gecikme kanıtı yalnız azaltmaz, dağılımını da bozar.**

## Özet

- Bir yapı, yalnız iddia edilen olay gerçekleştiği için oluşuyorsa doğrudan, başka nedenlerle de
  oluşabiliyorsa çıkarım sınıfındadır; 12 yapının 7'si doğrudandır ve tabanları 268 makinelik
  filoda 4 ile 187 arasında, yani yüzde 1 ile yüzde 70 arasında değişir.
- Yedi iddianın 2'si ayırt edici, 4'ü zayıf, 1'i gürültüdür; gürültü olan iddia tek bir çıkarım
  yapısına dayanır ve 187 temiz makinede de doğrudur.
- Dayanak sayısı ayırt ediciliği belirlemez: üç çıkarım dayanağı olan iddia (4,68), bir doğrudan ve
  iki çıkarım dayanağı olan iddiadan (1,71) daha zayıftır.
- Bağımsızlık varsayımı hesabı alt sınır yapar ve her zaman iddia lehine yanlıdır; aynı eylemden
  doğan izler birlikte bulunur.
- Bir yapının kaybı sayı olarak ölçülür: uygulama önbelleğinin kaybı iki iddianın sınıfını düşürür,
  kullanıcı profili damgasının kaybı hiçbirini düşürmez.
- Yapıların dokuzu döngüseldir ve ömürleri 1 ile 41,7 gün arasındadır; gecikme bir günden doksan
  güne çıktığında okunabilir yapı 12'den 3'e, dayanaksız kalan iddia 0'dan 5'e gider.

## Sonraki Adım

Bu konunun beş dersi beş ayrı sayı üretti: zincirin kaç kalemde koptuğu, kapsamın kaç kalem
getirdiği, sıranın kaç kalem kaybettirdiği, kaymanın kaç olayı ters çevirdiği ve bir izin kaç temiz
makinede de bulunduğu. Bunların hiçbiri henüz bir rapor cümlesi değil. Rapor, bu sayıların
üzerine kurulan iddialardan oluşur ve iddia ile kalem arasındaki bağ tek tek yazılmadıkça sayılar
raporda görünmez.

Son ders bu eşlemeyi ölçer ve kursu kapatır. Rapora girmesi düşünülen her iddia, dayandığı kanıt
kalemine bağlanır; üç sütun ayrı sayılır — kaç iddia doğrudan bir kalemle destekleniyor, kaçı bir
çıkarıma dayanıyor, kaçının hiçbir kanıtı yok. Teknik bulgunun hukuki bağlamda ne anlama geldiği de
tam olarak bu üç sayının nasıl yazıldığına bağlıdır.
