<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: grugq</title><link>https://news.ycombinator.com/user?id=grugq</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 16 Apr 2026 03:05:59 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=grugq" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by grugq in "Alt.Anonymous.Messages Newsgroup"]]></title><description><![CDATA[
<p>There has been some research done on this particular anonymous newsgroup.<p>“Deanonymising alt anonymous messages”<p><a href="https://www.youtube.com/watch?v=l5JBMyxvuH8" rel="nofollow">https://www.youtube.com/watch?v=l5JBMyxvuH8</a><p>The accompanying blog post is here:<p><a href="https://ritter.vg/blog-deanonymizing_amm.html" rel="nofollow">https://ritter.vg/blog-deanonymizing_amm.html</a><p>The inherent security of the technique is actually quite strong. The tooling is terrible and many other problems exist with AAM, but in general the idea of having a shared “inbox” is good for anonymity. There is no way to tell which message is intended for whom. Receiving messages is unlinked, which is obviously good for anonymity. Sending requires a different set of technologies to ensure that the message delivery is unlinked. Tor solves part of this problem.<p>AAM had serious limitations. Things fall down a bit with the underlying technology for newsgroups and PGP and so on not being designed for anonymity, “fail closed” security, or ease of use (and difficulty of misuse).<p>A bespoke system could work, but the limiting factor is selecting an “inbox” that is widely distributed and heavily used (the anonymity is directly correlated to how many people access the inbox/inbox container.)<p># Case Study: YardBird’s group (mostly) escapes arrest<p>A similar method for secrecy was used by a CSAM group. It was penetrated by the police when they arrested a member who turned informant to reduce his sentence. The police monitored the group from inside for months (I remember it being over a year). Despite having complete access to all the communications <i>and</i> technical surveillance data <i>and</i> international cooperation between police forces, the majority of the group evaded arrest.<p>There was a set of operating rules that the group followed and everyone who did so escaped the net. I wrote about it in 2013 if anyone is interested in digging deeper into the story.<p><a href="https://grugq.github.io/blog/2013/12/01/yardbirds-effective-usenet-tradecraft/" rel="nofollow">https://grugq.github.io/blog/2013/12/01/yardbirds-effective-...</a></p>
]]></description><pubDate>Fri, 14 Feb 2025 21:06:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=43053064</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=43053064</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43053064</guid></item><item><title><![CDATA[New comment by grugq in "FTC: Vast Surveillance of Users by Social Media and Video Streaming Companies"]]></title><description><![CDATA[
<p>> Even minutiae should have a place in our collection, for things of a seemingly trifling nature, when enjoined with others of a more serious cast, may lead to valuable conclusion.<p>— George Washington.</p>
]]></description><pubDate>Fri, 20 Sep 2024 06:34:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=41599387</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=41599387</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41599387</guid></item><item><title><![CDATA[New comment by grugq in "Userland rootkits are lame (2022)"]]></title><description><![CDATA[
<p>In retrospect I really should have included the title with the link.</p>
]]></description><pubDate>Mon, 01 Jul 2024 07:34:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=40843419</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=40843419</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40843419</guid></item><item><title><![CDATA[New comment by grugq in "Userland rootkits are lame (2022)"]]></title><description><![CDATA[
<p>And you can detect when you are being ptrace()d because a process cannot be ptrace()d twice. Unless they changed Linux again.<p>There are also timing issues that show up, and you can do any number of anti-debugging tricks which would reveal that the environment is being manipulated. Which is an instant red flag.<p>In general if the attacker is running at the same privilege level, you can probably evade it or at least detect it. I’m somewhat surprised there isn’t a basic forensics tool that automates all of these tests already.<p>“sus: [-h] [-v] [-V] [-o file] [-O format]<p>Sus tests for common indicators of compromise using on generic tests for common methods of implementing userland rootkits. It will check for LD_PRELOAD, ptrace(), inotify() and verify the system binaries match the upstream distribution hashsums. It can be used to dump the file system directly (warning, slow!) for comparison against the output of `find`. See EXAMPLES for more.”<p>Implementation is left as an exercise for the reader.</p>
]]></description><pubDate>Mon, 01 Jul 2024 07:31:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=40843405</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=40843405</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40843405</guid></item><item><title><![CDATA[New comment by grugq in "Userland rootkits are lame (2022)"]]></title><description><![CDATA[
<p>Author here.<p>The context of this post is somewhat important. It is a direct response to a post titled: <i>Symbiote Deep-Dive: Analysis of a New, Nearly-Impossible-to-Detect Linux Threat</i><p>Userland rootkits are not “<i>nearly-impossible-to-detect</i>.” They are not novel, they are not impossible to detect, and they are not the pinnacle of hacker techniques.<p>I felt that it was worth pointing out that the history of userland rootkits goes back a ways and that they were very easy to detect because they rely on proxying all access to the system. If you bypass the hook they use to enter their proxy, they you evade them entirely.<p>Forensic and incident response guides used to advise using static linked binaries for exactly this reason. There are guides from the 1990s telling people to do this because userland rootkits were an issue (before kernel rootkits everyone used userland rootkits.)<p>Here is an example from 2013 which points out that you can’t trust any binaries/libraries on the potentially compromised machine and should use statically linked tools. [0]<p>LD_PRELOAD rootkits are not new and they are not nearly-impossible-to-detect to detect. My post listed a number of ways to detect them, all of which have been known for decades.<p>[0] <a href="https://www.forensicfocus.com/forums/general/trusted-static-linked-binaries-for-linux-live-forensic/" rel="nofollow">https://www.forensicfocus.com/forums/general/trusted-static-...</a></p>
]]></description><pubDate>Mon, 01 Jul 2024 07:19:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=40843346</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=40843346</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40843346</guid></item><item><title><![CDATA[New comment by grugq in "Userland rootkits are lame (2022)"]]></title><description><![CDATA[
<p>Bringing your own static linked busybox will still evade that rootkit.<p>If the attacker has modified the environment to present a specific view of system state, bringing your own environment defeats it.<p>There are tricks which are better than modifying things to hide. For example, there is a race condition between opendir() and readdir() which you can win by using inotify(). Then you can unlink() whatever, wait a while, then link() it back in. During that time it will be deleted and thus invisible to any detection. (I saw a demo of this 12 years ago, so I might be misremembering a bit. I know it used inotify() and unlink())</p>
]]></description><pubDate>Mon, 01 Jul 2024 07:04:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=40843294</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=40843294</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40843294</guid></item><item><title><![CDATA[New comment by grugq in "The man who killed Google Search?"]]></title><description><![CDATA[
<p>"Prabhakar Raghavan is killing Google"<p>"Google's Death from Within: Prabhakar Raghavan"<p>"Blame Prabhakar Raghavan for Google's Crappy Search"<p>"Google Sucks. Because of Prabhakar Raghavan"<p>"Prabhakar Raghavan is the man killing Google Search."<p>"Yahoo Search Killer Prabhakar Raghavan Turns Death Ray on Google"<p>"Prabhakar Raghavan and the no good very bad Google search."</p>
]]></description><pubDate>Tue, 23 Apr 2024 19:29:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=40136157</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=40136157</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40136157</guid></item><item><title><![CDATA[New comment by grugq in "Unprivileged process injection techniques in Linux"]]></title><description><![CDATA[
<p>Oh, it’s far far worse than that. Just the core operation would be:<p>open() — network round trip 
fstat() — network round trip
brk() — network round trip
read() — network round trip
    Shuffle data over network
read() — network round trip
     Shuffle data over network<p>Etc etc<p>For a “grep root /etc/passwd” there are 88 syscalls on a Debian 11. If we assume a very generous 50ms latency for every syscall, that means we’re waiting 4.4s for the result.<p>The use case for syscall proxying is limited to when you don’t want to upload an exploit onto a target machine, but you need to run the exploit on that machine. So it could be an LPE or something.<p>It is way too slow for post exploitation work.</p>
]]></description><pubDate>Mon, 01 Jan 2024 12:55:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=38831506</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38831506</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38831506</guid></item><item><title><![CDATA[New comment by grugq in "Unprivileged process injection techniques in Linux"]]></title><description><![CDATA[
<p>Merry OPSEC, and a happy OPSEC Year!</p>
]]></description><pubDate>Mon, 01 Jan 2024 12:45:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=38831461</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38831461</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38831461</guid></item><item><title><![CDATA[New comment by grugq in "Unprivileged process injection techniques in Linux"]]></title><description><![CDATA[
<p>Yup, probably the more robust approach.</p>
]]></description><pubDate>Sun, 31 Dec 2023 21:31:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=38827685</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38827685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38827685</guid></item><item><title><![CDATA[New comment by grugq in "Unprivileged process injection techniques in Linux"]]></title><description><![CDATA[
<p>Syscall proxying was very old even when I wrote that article. The problem with syscall proxying is that it is slow. Take any process and imagine adding network latency to every single syscall. On a local network is incredibly slow, but over any sort of real distance it is just impossible.<p>That’s why I pushed everything to the target system. Run it local as much as possible.<p>Back then there were no containers or VMs to use. These days I think you should be bringing your environment with you. Unless there are serious reasons not to.</p>
]]></description><pubDate>Sun, 31 Dec 2023 21:27:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=38827666</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38827666</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38827666</guid></item><item><title><![CDATA[New comment by grugq in "Unprivileged process injection techniques in Linux"]]></title><description><![CDATA[
<p>Ah, so, in 2005 I wrote about that when I implemented rexec() — remote exec() — which takes a binary and then copies it over an arbitrary text only link (like ssh) and executes it completely in memory without touching disk.<p><a href="http://phrack.org/issues/62/8.html" rel="nofollow">http://phrack.org/issues/62/8.html</a><p>The idea was that if you have access to a box via a shell and you want to run your own binary without leaving evidence behind, you’d use rexec() to do that.</p>
]]></description><pubDate>Sun, 31 Dec 2023 20:18:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=38827173</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38827173</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38827173</guid></item><item><title><![CDATA[New comment by grugq in "Unprivileged process injection techniques in Linux"]]></title><description><![CDATA[
<p>The history actually goes back quite a bit further.<p>Exactly 20 years ago I wrote and released userland exec().<p><a href="https://seclists.org/bugtraq/2004/Jan/2" rel="nofollow">https://seclists.org/bugtraq/2004/Jan/2</a><p>Good to see that the technique is still viable after two decades.<p>On a related note, this sort of issue (difficulty researching the origins of techniques, and hacking history in general) is a problem that will only get worse. As a community we haven’t created an institutional memory beyond “the oldest hacker you know.”</p>
]]></description><pubDate>Sun, 31 Dec 2023 15:31:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=38824698</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38824698</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38824698</guid></item><item><title><![CDATA[New comment by grugq in "The Linux backdoor attempt of 2003 (2013)"]]></title><description><![CDATA[
<p>he was more specific, but I (a) don't remember the name off the top of my head, and (b) don't think it is beneficial to put them on blast. It isn't their fault they got hacked 20 years ago.</p>
]]></description><pubDate>Fri, 29 Dec 2023 17:13:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=38807441</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38807441</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38807441</guid></item><item><title><![CDATA[New comment by grugq in "The Linux backdoor attempt of 2003 (2013)"]]></title><description><![CDATA[
<p>What is there to say about the hack? Like everything back then it was probably accomplished by exploiting trust relationships. I can ask him, but it is not at interesting 20 years later.</p>
]]></description><pubDate>Fri, 29 Dec 2023 17:09:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=38807389</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38807389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38807389</guid></item><item><title><![CDATA[New comment by grugq in "The Linux backdoor attempt of 2003 (2013)"]]></title><description><![CDATA[
<p>the hacker. I interviewed the sysadmins about it.</p>
]]></description><pubDate>Fri, 29 Dec 2023 17:07:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=38807338</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38807338</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38807338</guid></item><item><title><![CDATA[New comment by grugq in "The Linux backdoor attempt of 2003 (2013)"]]></title><description><![CDATA[
<p>Am I missing something? That seems to link to a Linux backdoor, not a backdoor in Linux.</p>
]]></description><pubDate>Fri, 29 Dec 2023 15:45:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=38806124</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38806124</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38806124</guid></item><item><title><![CDATA[New comment by grugq in "The Linux backdoor attempt of 2003 (2013)"]]></title><description><![CDATA[
<p>I have the full story on that incident. It is actually really funny.<p>If the guy who did it wants to come forward, that is his decision. [edit: I won't name names.]<p>He did provided me the full story. He told me with the understanding that the story would go public, so I will dig it up and post it.<p>I also interviewed the sysadmins who were running the box at the time.<p>1. it was not an NSA operation, it was done by a hacker.<p>2. it was discovered by accident, not because of clever due diligence.<p>Basically, there was a developer who had a flakey connection and one time his commits didn't go through. To detect this in future he had a script that would download the entire tree from the server and compare it against his local copy to make sure that his changes had been committed.<p>It was discovered because of the discrepancy between his local working copy and the upstream copy. Which was checked not for security reasons, but because sometimes the two were out of sync. That's all. Just dumb luck.<p>The sysadmins are still quite bitter about it. I know how it feels when your box is hacked and you really take it personally.<p>The code wasn't added by hacking the CVS, as far as I remember, but rather through a hacked developer with commit rights.<p>that's the story as I was told</p>
]]></description><pubDate>Fri, 29 Dec 2023 15:33:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=38805998</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=38805998</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38805998</guid></item><item><title><![CDATA[New comment by grugq in "The Design and Implementation of Userland Exec (2014)"]]></title><description><![CDATA[
<p>It didn’t exist when I wrote this.</p>
]]></description><pubDate>Mon, 07 Aug 2023 13:47:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=37034399</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=37034399</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37034399</guid></item><item><title><![CDATA[New comment by grugq in "The Design and Implementation of Userland Exec (2014)"]]></title><description><![CDATA[
<p>The original date for this is actually 2004. Maybe 2003, but I can’t find an archival link.<p>I wrote the code because someone asked how to do this and it was easier to implement it than to explain it in detail. The whole thing is based on what I learned from “Linkers & Loaders,” a great book. (I still have my copy)<p>Later that year I wrote a wrapper around ul_exec() that used an automated interactive session with gdb to load a process, replace it with another binary (delivered over STDIN) and then execute that. This would prevent the binary ever being written to disk.<p>Remote exec was documented in phrack 62, along with the more advanced theory of counter forensics. Interestingly, the techniques I discussed in rexec() are now common APT tradecraft. Using common tools to limit the chance of detection and reduce evidence, aka living off the land, is now standard practice. I explained why about 20 years ago :)<p><a href="http://phrack.org/issues/62/8.html" rel="nofollow noreferrer">http://phrack.org/issues/62/8.html</a><p>It seems easier to load the whole issue from here: 
<a href="https://www.exploit-db.com/exploits/42873" rel="nofollow noreferrer">https://www.exploit-db.com/exploits/42873</a></p>
]]></description><pubDate>Mon, 07 Aug 2023 08:35:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=37031883</link><dc:creator>grugq</dc:creator><comments>https://news.ycombinator.com/item?id=37031883</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37031883</guid></item></channel></rss>