MITRE ATT&CK Olayları Hiyerarşisi
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MITRE ATT&CK Olayları Hiyerarşisi</title>
<script src="https://d3js.org/d3.v6.min.js"></script>
<style>
body {
font-family: Arial, sans-serif;
overflow: hidden;
}
.node rect {
fill: #fff;
stroke: #3182bd;
stroke-width: 2px;
}
.node text {
font: 12px sans-serif;
}
.link {
fill: none;
stroke: #999;
stroke-opacity: 0.6;
}
svg {
width: 100vw;
height: 100vh;
}
</style>
</head>
<body>
<h2 style="text-align: center;">MITRE ATT&CK Olayları Hiyerarşisi</h2>
<svg></svg>
<script>
// Veri yapısı
const treeData = {
"name": "Siber Güvenlik Olayları",
"children": [
{
"name": "TA0003 - Persistence",
"children": [
{
"name": "Web Shell Yükleme Denemesi",
"children": [
{ "name": "POST isteği: webconfig.aspx" },
{ "name": "HTTP 500 Hatası Döndü" },
{ "name": "HTTP 200 Yanıtı, Web Shell Aktif" }
]
}
]
},
{
"name": "TA0011 - Command & Control",
"children": [
{
"name": "Web Shell Üzerinden Komut Çalıştırma",
"children": [
{ "name": "Komut Çalıştırıldı: webconfig.aspx" }
]
}
]
},
{
"name": "TA0005 - Defense Evasion",
"children": [
{
"name": "Kalıcılık Sağlama Çabası",
"children": [
{ "name": "Web Shell Sıkça Çağrılıyor" }
]
},
{
"name": "Web Shell Aktif Kullanım",
"children": [
{ "name": "Saldırgan Hala Erişimde" }
]
}
]
},
{
"name": "T1059.003 - Command Shell",
"children": [
{
"name": "cmd.exe ile whoami.exe Komutu Çalıştırıldı",
"children": [
{ "name": "Kimlik Bilgisi Öğrenildi" }
]
}
]
},
{
"name": "T1106 - Native API",
"children": [
{
"name": "Yeni Süreç: rundll32.exe",
"children": [
{ "name": "Kötü Amaçlı Yazılım Başlatıldı" }
]
},
{
"name": "Yeni Süreç: rundll32.exe (microsoftupdate.exe)",
"children": [
{ "name": "Yazılım Yükleme" }
]
}
]
},
{
"name": "T1071 - Application Layer Protocol",
"children": [
{
"name": "microsoftupdate.exe Çalıştırıldı",
"children": [
{ "name": "Geçici Klasörde Bulundu" }
]
}
]
}
]
};
// SVG ve genel yapı
const svg = d3.select("svg"),
width = window.innerWidth,
height = window.innerHeight,
margin = { top: 20, right: 90, bottom: 30, left: 90 };
// Zoom & Pan özelliği ekle
const zoom = d3.zoom()
.scaleExtent([0.5, 2]) // Minimum ve maksimum zoom seviyesi
.on("zoom", (event) => g.attr("transform", event.transform));
svg.call(zoom);
const g = svg.append("g").attr("transform", `translate(${margin.left},${margin.top})`);
// Hiyerarşi ve ağaç düzeni oluştur
const root = d3.hierarchy(treeData);
const treeLayout = d3.tree().nodeSize([40, 380]); // Node aralıkları küçültüldü
treeLayout(root);
// Bağlantıları çiz
g.selectAll(".link")
.data(root.links())
.enter().append("path")
.attr("class", "link")
.attr("d", d3.linkHorizontal()
.x(d => d.y)
.y(d => d.x))
.attr("stroke", "#999")
.attr("stroke-width", "2px");
// Düğümleri çiz
const node = g.selectAll(".node")
.data(root.descendants())
.enter().append("g")
.attr("class", "node")
.attr("transform", d => `translate(${d.y},${d.x})`);
node.append("rect")
.attr("margin", 280)
.attr("width", 280)
.attr("height", 24)
.attr("rx", 8)
.attr("ry", 8)
.attr("fill", "#fff")
.attr("stroke", "#3182bd")
.attr("stroke-width", "2px");
node.append("text")
.attr("dy", 16)
.attr("dx", 10)
.style("text-anchor", "start")
.text(d => d.data.name);
</script>
</body>
</html>