Add 2 files
Browse files- index.html +146 -25
- prompts.txt +2 -1
index.html
CHANGED
|
@@ -119,6 +119,96 @@
|
|
| 119 |
background-color: #d1d5db;
|
| 120 |
border-radius: 10px;
|
| 121 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
</style>
|
| 123 |
</head>
|
| 124 |
<body class="bg-gray-50">
|
|
@@ -421,40 +511,66 @@
|
|
| 421 |
const detailsContainer = document.getElementById('attack-details');
|
| 422 |
detailsContainer.innerHTML = `
|
| 423 |
<div>
|
|
|
|
| 424 |
<div class="flex items-center mb-6">
|
| 425 |
<div class="w-12 h-12 rounded-full ${step.color} flex items-center justify-center mr-4">
|
| 426 |
<i class="fas fa-${step.icon} text-xl"></i>
|
| 427 |
</div>
|
| 428 |
<div>
|
| 429 |
<h3 class="text-xl font-semibold text-gray-800">${step.title}</h3>
|
| 430 |
-
<p class="text-sm text-gray-500">攻击阶段 ${step.id}</p>
|
| 431 |
</div>
|
| 432 |
</div>
|
| 433 |
|
| 434 |
-
|
| 435 |
-
|
| 436 |
-
<div class="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 437 |
</div>
|
| 438 |
|
| 439 |
-
|
| 440 |
-
|
| 441 |
-
<div class="flex items-center">
|
| 442 |
-
<
|
| 443 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 444 |
</div>
|
| 445 |
</div>
|
| 446 |
|
| 447 |
-
|
| 448 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 449 |
<div class="space-y-3">
|
| 450 |
${step.alerts.map(alert => `
|
| 451 |
-
<div class="p-
|
| 452 |
<div class="flex items-start">
|
| 453 |
-
<div class="
|
| 454 |
-
<i class="fas fa-${alert.severity === 'critical' ? 'exclamation-triangle
|
| 455 |
</div>
|
| 456 |
-
<div
|
| 457 |
-
<div class="text-sm font-medium text-gray-800">${alert.
|
|
|
|
| 458 |
</div>
|
| 459 |
</div>
|
| 460 |
</div>
|
|
@@ -462,17 +578,22 @@
|
|
| 462 |
</div>
|
| 463 |
</div>
|
| 464 |
|
|
|
|
| 465 |
<div>
|
| 466 |
-
<
|
| 467 |
-
|
| 468 |
-
|
| 469 |
-
|
| 470 |
-
|
| 471 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 472 |
</div>
|
| 473 |
-
|
| 474 |
-
|
| 475 |
-
`).join('')}
|
| 476 |
</div>
|
| 477 |
</div>
|
| 478 |
</div>
|
|
|
|
| 119 |
background-color: #d1d5db;
|
| 120 |
border-radius: 10px;
|
| 121 |
}
|
| 122 |
+
.forensic-item {
|
| 123 |
+
position: relative;
|
| 124 |
+
padding-left: 1.5rem;
|
| 125 |
+
margin-bottom: 0.75rem;
|
| 126 |
+
}
|
| 127 |
+
.forensic-item:before {
|
| 128 |
+
content: "";
|
| 129 |
+
position: absolute;
|
| 130 |
+
left: 0.5rem;
|
| 131 |
+
top: 0.5rem;
|
| 132 |
+
width: 6px;
|
| 133 |
+
height: 6px;
|
| 134 |
+
border-radius: 50%;
|
| 135 |
+
background-color: #3b82f6;
|
| 136 |
+
}
|
| 137 |
+
.forensic-item:after {
|
| 138 |
+
content: "";
|
| 139 |
+
position: absolute;
|
| 140 |
+
left: 0.5rem;
|
| 141 |
+
top: 1.1rem;
|
| 142 |
+
bottom: -0.5rem;
|
| 143 |
+
width: 2px;
|
| 144 |
+
background-color: #e5e7eb;
|
| 145 |
+
}
|
| 146 |
+
.forensic-item:last-child:after {
|
| 147 |
+
display: none;
|
| 148 |
+
}
|
| 149 |
+
.alert-icon {
|
| 150 |
+
width: 2rem;
|
| 151 |
+
height: 2rem;
|
| 152 |
+
display: flex;
|
| 153 |
+
align-items: center;
|
| 154 |
+
justify-content: center;
|
| 155 |
+
border-radius: 50%;
|
| 156 |
+
flex-shrink: 0;
|
| 157 |
+
}
|
| 158 |
+
.alert-critical {
|
| 159 |
+
background-color: #fee2e2;
|
| 160 |
+
color: #dc2626;
|
| 161 |
+
}
|
| 162 |
+
.alert-high {
|
| 163 |
+
background-color: #fef3c7;
|
| 164 |
+
color: #d97706;
|
| 165 |
+
}
|
| 166 |
+
.alert-emergency {
|
| 167 |
+
background-color: #ffedd5;
|
| 168 |
+
color: #ea580c;
|
| 169 |
+
}
|
| 170 |
+
.timeline-marker {
|
| 171 |
+
width: 1rem;
|
| 172 |
+
height: 1rem;
|
| 173 |
+
border-radius: 50%;
|
| 174 |
+
display: flex;
|
| 175 |
+
align-items: center;
|
| 176 |
+
justify-content: center;
|
| 177 |
+
position: relative;
|
| 178 |
+
z-index: 1;
|
| 179 |
+
}
|
| 180 |
+
.timeline-marker:after {
|
| 181 |
+
content: "";
|
| 182 |
+
position: absolute;
|
| 183 |
+
left: 50%;
|
| 184 |
+
top: 50%;
|
| 185 |
+
transform: translate(-50%, -50%);
|
| 186 |
+
width: 0.5rem;
|
| 187 |
+
height: 0.5rem;
|
| 188 |
+
border-radius: 50%;
|
| 189 |
+
background-color: white;
|
| 190 |
+
}
|
| 191 |
+
.section-divider {
|
| 192 |
+
position: relative;
|
| 193 |
+
margin: 1.5rem 0;
|
| 194 |
+
}
|
| 195 |
+
.section-divider:before {
|
| 196 |
+
content: "";
|
| 197 |
+
position: absolute;
|
| 198 |
+
left: 0;
|
| 199 |
+
right: 0;
|
| 200 |
+
top: 50%;
|
| 201 |
+
height: 1px;
|
| 202 |
+
background-color: #e5e7eb;
|
| 203 |
+
}
|
| 204 |
+
.section-divider span {
|
| 205 |
+
position: relative;
|
| 206 |
+
padding: 0 0.5rem;
|
| 207 |
+
background-color: white;
|
| 208 |
+
z-index: 1;
|
| 209 |
+
font-size: 0.75rem;
|
| 210 |
+
color: #6b7280;
|
| 211 |
+
}
|
| 212 |
</style>
|
| 213 |
</head>
|
| 214 |
<body class="bg-gray-50">
|
|
|
|
| 511 |
const detailsContainer = document.getElementById('attack-details');
|
| 512 |
detailsContainer.innerHTML = `
|
| 513 |
<div>
|
| 514 |
+
<!-- Header with icon and title -->
|
| 515 |
<div class="flex items-center mb-6">
|
| 516 |
<div class="w-12 h-12 rounded-full ${step.color} flex items-center justify-center mr-4">
|
| 517 |
<i class="fas fa-${step.icon} text-xl"></i>
|
| 518 |
</div>
|
| 519 |
<div>
|
| 520 |
<h3 class="text-xl font-semibold text-gray-800">${step.title}</h3>
|
| 521 |
+
<p class="text-sm text-gray-500">攻击阶段 ${step.id} | ${step.id < 10 ? '0' + step.id : step.id}:00</p>
|
| 522 |
</div>
|
| 523 |
</div>
|
| 524 |
|
| 525 |
+
<!-- Attack Behavior Section -->
|
| 526 |
+
<div class="mb-8">
|
| 527 |
+
<div class="flex items-center mb-3">
|
| 528 |
+
<div class="w-6 h-6 rounded-full bg-blue-100 text-blue-600 flex items-center justify-center mr-2">
|
| 529 |
+
<i class="fas fa-bolt text-xs"></i>
|
| 530 |
+
</div>
|
| 531 |
+
<h4 class="font-medium text-gray-700">攻击行为</h4>
|
| 532 |
+
</div>
|
| 533 |
+
<div class="bg-gray-50 p-4 rounded-lg text-sm text-gray-700 border border-gray-200">
|
| 534 |
+
<div class="flex">
|
| 535 |
+
<div class="timeline-marker ${step.color} mr-3 flex-shrink-0">
|
| 536 |
+
</div>
|
| 537 |
+
<div>${step.behavior}</div>
|
| 538 |
+
</div>
|
| 539 |
+
</div>
|
| 540 |
</div>
|
| 541 |
|
| 542 |
+
<!-- Defense Trigger Section -->
|
| 543 |
+
<div class="mb-8">
|
| 544 |
+
<div class="flex items-center mb-3">
|
| 545 |
+
<div class="w-6 h-6 rounded-full bg-green-100 text-green-600 flex items-center justify-center mr-2">
|
| 546 |
+
<i class="fas fa-shield-alt text-xs"></i>
|
| 547 |
+
</div>
|
| 548 |
+
<h4 class="font-medium text-gray-700">触发防御</h4>
|
| 549 |
+
</div>
|
| 550 |
+
<div class="flex items-center bg-gray-50 p-4 rounded-lg border border-gray-200">
|
| 551 |
+
<span class="defense-badge bg-white text-gray-800 rounded-full border border-gray-300 mr-3">${step.defenses}</span>
|
| 552 |
+
<span class="text-sm text-gray-600">检测到攻击行为并触发防御机制</span>
|
| 553 |
</div>
|
| 554 |
</div>
|
| 555 |
|
| 556 |
+
<!-- Security Alerts Section -->
|
| 557 |
+
<div class="mb-8">
|
| 558 |
+
<div class="flex items-center mb-3">
|
| 559 |
+
<div class="w-6 h-6 rounded-full bg-red-100 text-red-600 flex items-center justify-center mr-2">
|
| 560 |
+
<i class="fas fa-exclamation-triangle text-xs"></i>
|
| 561 |
+
</div>
|
| 562 |
+
<h4 class="font-medium text-gray-700">安全告警</h4>
|
| 563 |
+
</div>
|
| 564 |
<div class="space-y-3">
|
| 565 |
${step.alerts.map(alert => `
|
| 566 |
+
<div class="p-4 rounded-lg border ${alert.severity === 'critical' ? 'border-red-200 bg-red-50' : alert.severity === 'high' ? 'border-yellow-200 bg-yellow-50' : 'border-orange-200 bg-orange-50'}">
|
| 567 |
<div class="flex items-start">
|
| 568 |
+
<div class="alert-icon ${alert.severity === 'critical' ? 'alert-critical' : alert.severity === 'high' ? 'alert-high' : 'alert-emergency'} mr-3">
|
| 569 |
+
<i class="fas fa-${alert.severity === 'critical' ? 'exclamation-triangle' : alert.severity === 'high' ? 'exclamation-circle' : 'exclamation'} text-sm"></i>
|
| 570 |
</div>
|
| 571 |
+
<div>
|
| 572 |
+
<div class="text-sm font-medium text-gray-800 mb-1">${alert.severity === 'critical' ? '严重告警' : alert.severity === 'high' ? '高危告警' : '紧急告警'}</div>
|
| 573 |
+
<div class="text-xs text-gray-600">${alert.message}</div>
|
| 574 |
</div>
|
| 575 |
</div>
|
| 576 |
</div>
|
|
|
|
| 578 |
</div>
|
| 579 |
</div>
|
| 580 |
|
| 581 |
+
<!-- Forensic Evidence Section -->
|
| 582 |
<div>
|
| 583 |
+
<div class="flex items-center mb-3">
|
| 584 |
+
<div class="w-6 h-6 rounded-full bg-indigo-100 text-indigo-600 flex items-center justify-center mr-2">
|
| 585 |
+
<i class="fas fa-search text-xs"></i>
|
| 586 |
+
</div>
|
| 587 |
+
<h4 class="font-medium text-gray-700">取证证据</h4>
|
| 588 |
+
</div>
|
| 589 |
+
<div class="bg-white border border-gray-200 rounded-lg overflow-hidden">
|
| 590 |
+
<div class="p-4">
|
| 591 |
+
${step.forensic.map((item, idx) => `
|
| 592 |
+
<div class="forensic-item">
|
| 593 |
+
<div class="text-sm text-gray-700 pl-2">${item}</div>
|
| 594 |
</div>
|
| 595 |
+
`).join('')}
|
| 596 |
+
</div>
|
|
|
|
| 597 |
</div>
|
| 598 |
</div>
|
| 599 |
</div>
|
prompts.txt
CHANGED
|
@@ -1 +1,2 @@
|
|
| 1 |
-
1、高级持续性威胁攻击链文本替换为 BAS AI Hacker演练报告 2、完整的攻击流程可视化,包含交互式防御检测点 文本替换为演练时间:2025-04-23 10:11 ~ 2025-04-23 11:10 3、将APT组织: TA505 文本替换成 发起攻击
|
|
|
|
|
|
| 1 |
+
1、高级持续性威胁攻击链文本替换为 BAS AI Hacker演练报告 2、完整的攻击流程可视化,包含交互式防御检测点 文本替换为演练时间:2025-04-23 10:11 ~ 2025-04-23 11:10 3、将APT组织: TA505 文本替换成 发起攻击
|
| 2 |
+
优化攻击阶段取证详情中的视觉样式,整体内容都更加美观一些
|