---
title: 'Sosyal Mühendisliğin Temeli'
source: 'https://academia.sh/tr/kurslar/saldiri-teknikleri/sosyal-muhendisligin-temeli'
course: 'Saldırı Teknikleri ve Tehdit Ortamı'
language: tr
updated: '2026-08-17T18:08:33+00:00'
license: 'CC BY-SA 4.0'
---

# Sosyal Mühendisliğin Temeli

Karar anını bir süre bütçesi olarak modellemek: yedi doğrulama kaleminin baskı altında kaçının kullanılabildiği, on iki talepte kaç sahte talebin geçtiği, altı adımlık zincirin kaç halkasında denetim bulunduğu ve geri arama yordamının durdurduğu talep ile kestiği meşru iş.

Önceki konu saldırıyı adım dizisi olarak modelledi ve her adımın karşısına bir denetim koymayı
denedi. O modelde zincirin ilk halkası hep teknikti: kayıtsız bir hesap, kapatılmamış bir uç,
denetlenmeyen bir bağlantı. Bu konunun sorusu farklıdır. Zincirin ilk halkası bir kişinin verdiği
karar olduğunda o kararın karşısına ne konabilir ve kaç tane konabilir?

Bir talebi doğrulamak zaman ister ve doğrulama kalemlerinin her birinin kendi süresi vardır.
Süre baskısı bu yüzden bir üslup meselesi değil, ölçülebilir bir kısıttır: karar vericiye bırakılan
saniye azaldıkça kullanabildiği doğrulama kalemi sayısı düşer. Güven de aynı biçimde ölçülür —
doğrulanamayan bir iç ayrıntı, bir kalemin yerini alan bir kısayoldur. Bu ders o iki etkeni tek bir
sayıya, **kullanılabilen kalem sayısına** indirger ve zincirin hangi halkasında kırıldığını sayar.
Burada modellenen adımların yazılı yetki ve tanımlı kapsam dışında denenmesi hem yasadışı hem de
meslek dışıdır.

- **SM1.** Talep kümesi, doğrulama kalemleri ve süreleri kurgusal bölgesel ölçüm ağının abone
  hizmetleri masasına aittir. Gerçek bir talep işlenmiyor; ölçülen şey `node` ile kurulan modeldir.
- **SM2.** Her doğrulama kaleminin sabit bir süresi var. Gerçekte süre kişiye ve o anki yüke göre
  değişir; sabit süre kalemlerin ucuzdan pahalıya sıralamasını korur, bu sıralama ölçünün temelidir.
- **SM3.** Karar verici kalemleri ucuzdan pahalıya uygular. Bu **en iyimser** varsayımdır; gerçek
  sıra sezgiyle belirlenir ve aynı bütçeye daha az kalem sığdırır.
- **SM4.** Talebin gerçek sınıfı modelde bilinir. Gerçekte sınıf ancak sonradan bilinir; bilindiği
  varsayılıyor ki geçen sahte talep ile kesilen meşru iş ayrı ayrı sayılabilsin.
- **SM5.** Bir kalem talebi ya eler ya elemez. Kısmi şüphe, ikinci bir soru sorma ve talebi askıya
  alma modellenmedi.
- **SM6.** Süre baskısı tek bir sayıya indirgendi: karar için kalan saniye. Otorite, karşılıklılık
  ve utanma gibi etkenler ayrı ayrı modellenmedi; hepsi bütçeyi kısaltan aynı sayı olarak taşınır.

## Karar Anı Bir Süre Bütçesidir

Model üç parçadan oluşur. Doğrulama kalemleri süreleriyle birlikte listelenir; talepler sınıfları,
türleri, kendilerine bırakılan süre bütçesi ve tutarlarıyla verilir; her talebin karşısında onu
**eleyebilecek** kalemler yazılır. Eleyen kalem listesi bir tahmin değil, modelin tanımıdır: o
kalem uygulanırsa talep durur, uygulanmazsa geçer.

Talep türü ayrı bir sütun olarak taşınır çünkü yordamların kapsamı türle çizilir. Erişim, ödeme ve
kayıt olmak üzere üç tür var; bir yordamın hangi türe değdiği, hangi zincirin kırıldığını doğrudan
belirler ve dersin sonunda kapsam dışı kalan tek türün bedeli sayılacaktır.

```js
// karar.mjs — dogrulama kalemleri, talep kumesi ve karar zinciri; model
export const KALEM = { // ad: kalemi uygulamanin saniye maliyeti
  'tutari esikle karsilastirma': 20, 'gonderen adresini kayitla karsilastirma': 40,
  'is emri numarasini sistemde arama': 60, 'yetki listesinde talep sahibini bulma': 90,
  'gecmis talep kaydina bakma': 120, 'kayitli numaradan geri arama': 180, 'amir onayi isteme': 300,
};
const [T, G, I, Y, K, A, O] = Object.keys(KALEM);
export const ESIK = 2000; // kurgu odeme birimi
// [talep, sinif, tur, baski butcesi (sn), tutar, talebi eleyen kalemler]
export const TALEP = [
  ['sifre sifirlama', 'sahte', 'erisim', 60, 0, [A, Y]],
  ['odeme hesabi degisikligi', 'sahte', 'odeme', 120, 4800, [A, K]],
  ['acil odeme onayi', 'sahte', 'odeme', 30, 9500, [T, O, A]],
  ['is emri disi saha erisimi', 'sahte', 'erisim', 90, 0, [I, A]],
  ['abone kaydi disa aktarimi', 'sahte', 'kayit', 180, 0, [Y, O]],
  ['planli bakim gecici erisimi', 'mesru', 'erisim', 300, 0, []],
  ['yeni saha calisani hesabi', 'mesru', 'erisim', 600, 0, []],
  ['donem sonu fatura onayi', 'mesru', 'odeme', 240, 12000, []],
  ['sayac degisimi odemesi', 'mesru', 'odeme', 120, 1500, []],
  ['sube ucunda yazici tanimi', 'mesru', 'kayit', 480, 0, []],
  ['abone itirazi kayit sorgusu', 'mesru', 'kayit', 90, 0, []],
  ['kesinti ekibine gecici yetki', 'mesru', 'erisim', 45, 0, []],
];
// zincirin adimlari: [adim, onkosul, adimi goren denetim, adim bitince dusen kalem]
export const ZINCIR = [
  ['gorev bilgisi toplama', 'disaridan gorulebilen gorev listesi', null, 0],
  ['bahane kurma', 'ic bir surecin adi', null, 0],
  ['temas kurma', 'ulasilabilir kanal', 'kanal kayitli mi', 1],
  ['guven isareti verme', 'dogrulanamayan ic ayrinti', 'ayrinti kayitla karsilastirilir mi', 1],
  ['aciliyet yaratma', 'karar vericinin sure butcesi', 'sure butcesi yordamla sabit mi', 2],
  ['eylem talebi', 'yetkili karar verici', 'geri arama zorunlu mu', 5],
];
export function kalemler(butce) { // butceye sigan dogrulama kalemleri, ucuzdan pahaliya
  let t = 0; const secili = [];
  for (const [ad, sn] of Object.entries(KALEM)) { if (t + sn > butce) break; t += sn; secili.push(ad); }
  return { secili, sure: t };
}
export const yordamKapsami = (t) => t[2] === 'erisim' || (t[2] === 'odeme' && t[4] > ESIK);
```

## Baskı Bütçesi Kalem Sayısını Nasıl Düşürüyor

```js
// kosum1.mjs — sure baskisi altinda kullanilabilen dogrulama kalemi sayisi ve gecen sahte talep
import { KALEM, TALEP, kalemler } from './karar.mjs';

console.log(`${Object.keys(KALEM).length} dogrulama kalemi, toplam ${Object.values(KALEM).reduce((a, b) => a + b, 0)} sn; ` +
  `${TALEP.length} talep, ${TALEP.filter((t) => t[1] === 'sahte').length} sahte\n`);
console.log(`${'talep'.padEnd(28)} ${'sinif'.padStart(5)} ${'baski'.padStart(5)} ${'kalem'.padStart(5)} ${'sonuc'.padStart(6)}`);
let gecen = 0, duran = 0;
for (const t of TALEP) {
  const { secili } = kalemler(t[3]);
  const durdu = t[5].some((k) => secili.includes(k));
  if (t[1] === 'sahte') { durdu ? duran++ : gecen++; }
  console.log(`${t[0].padEnd(28)} ${t[1].padStart(5)} ${String(t[3]).padStart(5)} ${String(secili.length).padStart(5)} ` +
    `${(t[1] === 'sahte' ? (durdu ? 'durdu' : 'gecti') : 'gecti').padStart(6)}`);
}
console.log(`\nbaski butcesine gore kullanilabilen kalem sayisi:`);
for (const b of [30, 60, 120, 180, 300, 600]) {
  const { secili, sure } = kalemler(b);
  console.log(`  ${String(b).padStart(3)} sn -> ${secili.length}/${Object.keys(KALEM).length} kalem (${sure} sn), ` +
    `disarida kalan: ${Object.keys(KALEM).filter((k) => !secili.includes(k)).length}`);
}
console.log(`\nyordamsiz karar: ${duran} sahte talep durdu, ${gecen} gecti`);
console.log(`gecen sahte talepler: ${TALEP.filter((t) => t[1] === 'sahte' && !t[5].some((k) => kalemler(t[3]).secili.includes(k))).map((t) => `${t[0]} (${t[3]} sn)`).join('; ')}`);
```

```
7 dogrulama kalemi, toplam 810 sn; 12 talep, 5 sahte

talep                        sinif baski kalem  sonuc
sifre sifirlama              sahte    60     2  gecti
odeme hesabi degisikligi     sahte   120     3  gecti
acil odeme onayi             sahte    30     1  durdu
is emri disi saha erisimi    sahte    90     2  gecti
abone kaydi disa aktarimi    sahte   180     3  gecti
planli bakim gecici erisimi  mesru   300     4  gecti
yeni saha calisani hesabi    mesru   600     6  gecti
donem sonu fatura onayi      mesru   240     4  gecti
sayac degisimi odemesi       mesru   120     3  gecti
sube ucunda yazici tanimi    mesru   480     5  gecti
abone itirazi kayit sorgusu  mesru    90     2  gecti
kesinti ekibine gecici yetki mesru    45     1  gecti

baski butcesine gore kullanilabilen kalem sayisi:
   30 sn -> 1/7 kalem (20 sn), disarida kalan: 6
   60 sn -> 2/7 kalem (60 sn), disarida kalan: 5
  120 sn -> 3/7 kalem (120 sn), disarida kalan: 4
  180 sn -> 3/7 kalem (120 sn), disarida kalan: 4
  300 sn -> 4/7 kalem (210 sn), disarida kalan: 3
  600 sn -> 6/7 kalem (510 sn), disarida kalan: 1

yordamsiz karar: 1 sahte talep durdu, 4 gecti
gecen sahte talepler: sifre sifirlama (60 sn); odeme hesabi degisikligi (120 sn); is emri disi saha erisimi (90 sn); abone kaydi disa aktarimi (180 sn)
```

Alt tablo dersin ilk sayısını veriyor. Masanın elinde yedi doğrulama kalemi var ve hepsini
uygulamak 810 saniye sürüyor. Otuz saniyelik bir bütçede bunlardan **biri** kullanılabiliyor, altısı
dışarıda kalıyor. Yüz seksen saniyede bile üç kalem kullanılabiliyor; en pahalı iki kalem — geri
arama ve amir onayı — ancak altı yüz saniyelik bir bütçede sıraya girebiliyor. Kalem sayısı bütçeyle
doğru orantılı değil, basamaklı düşüyor: yüz yirmi ile yüz seksen saniye arasında hiçbir yeni kalem
eklenmiyor, çünkü sıradaki kalem doksan saniye ve toplam iki yüz onu buluyor.

Üst tabloda bunun sonucu görünüyor. Beş sahte talebin dördü geçiyor ve geçenlerin ortak yanı
kalemlerin dışarıda bırakılması: sahte taleplerin her birini eleyecek kalem modelde **var**, ama
bırakılan bütçeye sığmıyor. Duran tek talep en kısa bütçeyi bırakan taleptir — otuz saniye — ve
onu duran şey en ucuz kalemdir. Tutarı eşikle karşılaştırmak yirmi saniye sürer ve dokuz bin beş
yüz birimlik bir ödemeyi tek başına işaretler. Bu, ölçünün ters yönlü ilk bulgusudur: baskıyı
artırmak zincire her zaman yaramaz, çünkü çok kısa bir bütçe en ucuz kalemi de tetikleyecek kadar
göze çarpar.

Yordamsız karar bu yüzden dört sahte talebi geçiriyor. Karar vericinin dikkatsizliği değil,
bütçesinin kısalığı ölçülüyor. Aynı kişi altı yüz saniyeyle altı kalem uygulayabiliyor.

## Zincir, Halkalar ve Erken Kırma Kazancı

```js
// kosum2.mjs — zincir adimlari, kirilabilen halka ve geri arama yordaminin uc sutunu
import { TALEP, ZINCIR, KALEM, kalemler, yordamKapsami } from './karar.mjs';

const GERI = 'kayitli numaradan geri arama';
let kum = 0; const kumul = ZINCIR.map((a) => (kum += a[3]));
console.log(`${'#'.padStart(2)} ${'adim'.padEnd(22)} ${'onkosul'.padEnd(34)} ${'denetim'.padStart(7)} ${'kumul. kalem'.padStart(12)}`);
ZINCIR.forEach((a, i) => console.log(`${String(i + 1).padStart(2)} ${a[0].padEnd(22)} ${a[1].padEnd(34)} ` +
  `${(a[2] ? 'var' : 'yok').padStart(7)} ${String(kumul[i]).padStart(12)}`));
const kirilabilir = ZINCIR.map((a, i) => (a[2] ? i : -1)).filter((i) => i >= 0);
const erken = kirilabilir[0], gec = kirilabilir[kirilabilir.length - 1];
console.log(`\nzincir ${ZINCIR.length} adim; denetimi olan ${kirilabilir.length}, hic denetimi olmayan ${ZINCIR.length - kirilabilir.length}`);
console.log(`en erken kirilabilen halka ${erken + 1} -> o ana kadar dusen kalem ${erken ? kumul[erken - 1] : 0}`);
console.log(`en gec kirilabilen halka  ${gec + 1} -> o ana kadar dusen kalem ${kumul[gec - 1]}`);
console.log(`hic kirilmazsa dusen kalem ${kumul[ZINCIR.length - 1]}; erken kirma kazanci ${kumul[gec - 1] - (erken ? kumul[erken - 1] : 0)} kalem`);

console.log(`\ngeri arama yordami (${KALEM[GERI]} sn, tur 'erisim' ya da esik ustu 'odeme'):`);
let durdu = 0, kacti = 0, kesilen = [], eksure = 0;
for (const t of TALEP) {
  const kapsam = yordamKapsami(t);
  const uygulanan = kalemler(t[3]).secili.concat(kapsam ? [GERI] : []);
  if (kapsam) eksure += KALEM[GERI];
  if (t[1] === 'sahte') { t[5].some((k) => uygulanan.includes(k)) ? durdu++ : kacti++; }
  else if (kapsam && t[3] < KALEM[GERI]) kesilen.push(`${t[0]} (${t[3]} sn)`);
}
console.log(`  kapsama giren talep ${TALEP.filter(yordamKapsami).length}/${TALEP.length}, eklenen dogrulama suresi ${eksure} sn`);
console.log(`  duran sahte talep ${durdu}/5, kacan ${kacti}`);
console.log(`  kacan: ${TALEP.filter((t) => t[1] === 'sahte' && !yordamKapsami(t) && !t[5].some((k) => kalemler(t[3]).secili.includes(k))).map((t) => `${t[0]} (tur ${t[2]})`).join('; ')}`);
console.log(`  kesilen mesru is ${kesilen.length}: ${kesilen.join('; ')}`);
```

```
 # adim                   onkosul                            denetim kumul. kalem
 1 gorev bilgisi toplama  disaridan gorulebilen gorev listesi     yok            0
 2 bahane kurma           ic bir surecin adi                     yok            0
 3 temas kurma            ulasilabilir kanal                     var            1
 4 guven isareti verme    dogrulanamayan ic ayrinti              var            2
 5 aciliyet yaratma       karar vericinin sure butcesi           var            4
 6 eylem talebi           yetkili karar verici                   var            9

zincir 6 adim; denetimi olan 4, hic denetimi olmayan 2
en erken kirilabilen halka 3 -> o ana kadar dusen kalem 0
en gec kirilabilen halka  6 -> o ana kadar dusen kalem 4
hic kirilmazsa dusen kalem 9; erken kirma kazanci 4 kalem

geri arama yordami (180 sn, tur 'erisim' ya da esik ustu 'odeme'):
  kapsama giren talep 8/12, eklenen dogrulama suresi 1440 sn
  duran sahte talep 4/5, kacan 1
  kacan: abone kaydi disa aktarimi (tur kayit)
  kesilen mesru is 1: kesinti ekibine gecici yetki (45 sn)
```

Zincir altı adım ve ilk iki adımın karşısında hiçbir denetim yok. Bunun nedeni adımların
zararsızlığı değil, savunmanın görüş alanının dışında kalmalarıdır: görev bilgisinin dışarıdan
görülebilir olması ve bir iç sürecin adının bilinmesi, hiçbir kayda düşmeyen hazırlık adımlarıdır.
Zincirin ilk iki halkası bu yüzden **sayılamaz**, yalnız daraltılabilir.

Kırılabilen dört halka üçüncü adımda başlıyor ve o noktada henüz hiçbir kalem düşmemiş. Altıncı
adımda kırmak ise dört kalem düşmüşken gelir. İkisi arasındaki fark erken kırma kazancıdır: **dört
kalem**. Zincir hiç kırılmazsa düşen kalem dokuza çıkar, yani son adımı geçirmenin kendi başına
bedeli beş kalemdir. Bu üç sayı bir arada okunduğunda savunmanın nereye yatırım yapacağı bir görüş
değil, bir sıralama olur.

Geri arama yordamı bunu üç sütunla gösteriyor. Yordam on iki talebin sekizini kapsıyor ve dört
sahte talebi durduruyor; yordamsız karar yalnız birini durdurmuştu. Kaçan tek talep kapsam
dışındadır: kayıt türündeki bir dışa aktarım isteği ne erişim ne de eşik üstü ödemedir, dolayısıyla
yordam ona hiç değmez. Burada zincirin kırılamadığı durum ölçüye giriyor — yordam bu talep için bir
halka değil, ölçü tespite kayıyor: talep geçer, ancak dışa aktarımın kaydı sonradan sayılabilir.

Bedel iki kalemde yazılır. Sekiz talepte yüz seksener saniye eklenerek toplam 1.440 saniyelik
doğrulama süresi doğuyor. Kesilen meşru iş bir tanedir ve hangi iş olduğu önemlidir: kesinti
ekibine geçici yetki verme talebi kırk beş saniyelik bir bütçeyle geliyor, geri arama yüz seksen
saniye sürüyor ve iş yordamın içine sığmıyor. Yordamın durdurduğu tek meşru iş, en acil olanıdır.
Bu bir kusur değil, yordam tasarımının kaçınılmaz sonucudur: süre baskısını denetime çeviren her
yordam, gerçekten acil olan işi de aynı denetime sokar.

## Özet

- 7 doğrulama kaleminin tamamı 810 saniye sürüyor. 30 saniyelik bütçede 1 kalem, 180 saniyede 3,
  600 saniyede 6 kalem kullanılabiliyor; kalem sayısı bütçeyle basamaklı artıyor.
- Yordamsız kararda 5 sahte talebin 4'ü geçiyor. Her birini eleyecek kalem modelde var, ama
  bırakılan bütçeye sığmıyor; duran tek talep en kısa bütçeliydi ve onu en ucuz kalem durdurdu.
- Zincir 6 adım; 4 adımda denetim var, ilk 2 adım hiçbir kayda düşmüyor. Bu iki halka sayılamaz,
  yalnız dışarıdan görülen bilgi daraltılarak zorlaştırılabilir.
- En erken kırılabilen halka 3. adımdır ve orada düşen kalem 0'dır; 6. adımda kırmak 4 kalem düşmüş
  demektir. Erken kırma kazancı 4 kalem, zincirin hiç kırılmamasının bedeli 9 kalemdir.
- Geri arama yordamı 12 talebin 8'ini kapsıyor, 4 sahte talebi durduruyor; kapsam dışı kalan 1
  talepte hiçbir halka kırılmıyor ve ölçü tespite kayıyor.
- Yordamın bedeli 1.440 saniye ek doğrulama ve 1 kesilen meşru iştir. Kesilen iş, bütçesi yordamın
  süresinden kısa olan en acil taleptir.

## Sonraki Adım

Bu derste talep karar vericiye ulaşmış sayıldı ve ölçülen şey kararın kendisiydi. Zincirin üçüncü
halkası — temas kurma — tek satırda geçildi, oysa temasın taşıdığı ileti ölçülebilir bir nesnedir.
Bir ileti kümesinde meşru olanla sahte olanı ayıran şey üslup değil, sayılabilir göstergelerdir:
gönderenin daha önce görülmemiş olması, yanıt adresinin gönderenden ayrışması, bağlantı hedefinin
metinden farklı olması. Sonraki dersin sorusu budur: bir ileti kümesinde kaç ayırt edici gösterge
sayılabiliyor, seçilen eşik kaç sahte iletiyi kaçırıyor ve kaç meşru iletiyi yanlış işaretliyor —
ve hedef daraldıkça gösterge sayısı neden düşüyor.
