Bittorrent-developer bouwt tool die bericht in willekeurig bestand verstopt

Bram Cohen, de softwareontwikkelaar die aan de wieg stond van het bittorrent-protocol, heeft onder de naam DissidentX een nieuwe steganografietool ontwikkeld. Volgens Cohen maakt DissidentX het aanzienlijk moeilijker om bewuste manipulaties in bestanden te ontdekken.

Bij steganografie wordt informatie verborgen in ogenschijnlijk onschuldige objecten. Deze encryptiemethode kan bijvoorbeeld gebruikt worden om een bericht in een afbeelding te verstoppen. De tool waaraan Cohen werkt, gebruikt een methode waarbij een bericht in een willekeurig type bestand kan worden verborgen. De bittorrent-bedenker noemt DissidentX dan ook vooral een framework waarbij de nadruk ligt op het zo goed mogelijk verbergen van het bericht, zo laat hij in een interview met Forbes weten.

DissidentX gebruikt een methode waarbij de ontvanger de data die is verborgen kan herleiden door een hash van het moederbestand te genereren. Deze hash bevat de boodschap, die vervolgens met de sleutel van de ontvanger kan worden ontsleuteld. Volgens Cohen weet DissidentX bovendien de te verbergen data via onvoorspelbare patronen in een bestand te verstoppen, wat detectie verder bemoeilijkt. Daarbij is het mogelijk om verschillende berichten voor diverse ontvangers te verstoppen, terwijl de tool ook extra mechanismen bevat om detectie van het gebruik van steganografie te verminderen.

Net als met bijvoorbeeld TrueCrypt is het met DissidentX mogelijk om verschillende encryptielagen aan te brengen. Zo ontstaat er een mechanisme van 'geloofwaardige weerlegbaarheid', waarbij een persoon bijvoorbeeld sleutel A prijsgeeft, terwijl voor een andere onzichtbare versleutelde container sleutel B nodig is.

Cohen zegt aan DissidentX te zijn begonnen nadat Haystack, een andere steganografietool, onveilig bleek te zijn. De software werd gebruikt door politieke dissidenten in onder andere Iran. Cohen meent dat als zijn DissidentX-software verder wordt ontwikkeld, deze bijvoorbeeld door mensenrechtenorganisaties ingezet kan worden om veilig te communiceren via het Tor-netwerk.

Door Dimitri Reijerman

Redacteur

16-01-2014 • 14:39

36 Linkedin

Reacties (36)

36
35
27
12
1
5
Wijzig sortering
Leuk, maar:
Bij steganografie wordt informatie verborgen in ogenschijnlijk onschuldige objecten. Deze encryptiemethode kan bijvoorbeeld gebruikt worden om een bericht in een afbeelding te verstoppen.
Dan kan je dus ook een virus in een afbeelding verstoppen of de NSA een programmaatje in je webbrowser. Ik moet zeggen dat ik het maar gevaarlijk vind.

Aan de andere kant heeft het ook wel goede toepassingen. Stel voor je hebt een encryptiesleutel die je ergens op je computer wil bewaren. Dan kan je heel erg makkelijk die sleutel in een foto van je schoondochter stoppen. Reken maar dat geen hacker hem daar gaat vinden.

[Reactie gewijzigd door Frozen op 16 januari 2014 14:44]

Een virus kan sowieso wel worden herkend, kwaadaardige code is goed op te sporen. Zodra informatie zo onherkenbaar in bijvoorbeeld een afbeelding wordt gestopt/verspreid als met deze tool gebeurt, kan het niet tegelijkertijd meer functioneel zijn als kwaadaardige software. Het is dan gewoon data van de afbeelding geworden.
Anoniem: 533809
@Fawn17 januari 2014 05:42
@fawn
Een virus kan sowieso wel worden herkend, kwaadaardige code is goed op te sporen.
Ik denk dat je toch een tikkeltje abuis bent. Als de huidige situatie ons iets zou moeten leren dan is het wel dat kwaadaardige code zeer zeer lastig op te sporen kan zijn.

Ik weet niet of je bv het nieuws over die 18 jarige rotterdamse "hacker" (scriptkiddie) gevolgt hebt ? die gebruikte zeer bekende malware (Blackshades) , malware die normaal gesproken zeer makkelijk gededecteerd zou moeten kunnen worden , maar door het gebruik van een packer (DarkEye) was anti-virus inneens totaal nutteloos omdat het bestand niet meer als zodanig kon worden herkend. Traditionele anti-virus berust immers op signature files , die kinderlijk eenvoudig om de tuin te leiden zijn.
Een ieder met kennis en ervaring op dit gebied weet dit (of zou dit in ieder geval moeten weten).

Dan heb ik het nog niet eens over NSA malware zoals duqu , flame en stuxnet die vele vele jaren VOLLEDIG ONDETECTEERBAAR was.

Of recenter , de malware infectie bij belgacom , zelfs de experts van Microsoft zelf konden het niet vinden.

Dus nee , kwaadaardige code is niet makkelijk op te sporen.


@mecallie
Dat gaat dus NIET werken. Heel simpel: om het virus uit te lezen heb je de tool nodig die de hash waarde van het plaatje berekend en omzet naar bruikbare data (DissidentX dus).

Ook al zou er een bug zitten in de image viewer: die "ziet" het virus simpelweg niet.

Als je een virus in een truecrypt container propt dan kan daar ook niets mee gebeuren zonder de sleutel. Het zou toch leuk zijn als een virus anders wordt behandeld dan de normale data in de container ;)

Als er straks tools komen die de hashwaarde automatisch lezen voor je zou het kunnen :)
Ik denk niet dat je begrijpt wat dronefang bedoelt.
Zijn punt is niet dat iemand die bv een jpeg plaatje met daarin encrypted een virus (malware) download en/of weergeeft zomaar spontaan besmet word , maar dat dat plaatje met encrypted malware gebruikt kan worden als onderdeel van een aanval.

De meeste aanvallen bestaan uit meerdere stages , in het algemeen is de eerste stage om onze shellcode in het geheugen van de computer van het slachtoffer te krijgen , want zonder shellcode word het lastig (ROP technieken uitgezonderd). Vervolgens zorgen we er voor dat die shellcode ook daadwerkerkelijk uitgevoerd kan worden (DEP uitschakelen indien aanwezig/van invloed) en als laatste jumpen we naar het begin van de shellcode en voila.
Nou weet ik dat we het hier niet over shellcode op zich hebben , maar de overeenkomst tussen de 2 is dat het om (kwaadaardige) uitvoerbare code gaat.

Bovendien is het niet ondenkbaar dat we een situatie tegenkomen waarbij het (potentiele) slachtoffer van een driveby download wel kan/mag connecten met de website die hij bezoekt maar niet zomaar een executable van een onbekende locatie mag downloaden. In dergelijke gevallen is het dus mogelijk om de malware executable in een ander bestand op de te bezoeken website te plaatsen en dit bestand als normaal onderdeel van die website te laten downloaden door het potentiele slachtoffer . Hierna is het business as usual , de shellcode kan dan de encrypted malware uitpakken en uitvoeren zonder dat er alarmbellen gaan rinkelen met betrekking tot het downloaden van een executable van een mogelijk onbetrouwbare locatie en (traditionele) anti-virus produkten zullen ook niet in staat zijn om de malware te detecteren (a: word vaak alleen de inhoud van executable bestanden gescanned en b: ook al word het wel gescanned dan kan het niet uitgepakt worden en zal het dus nog steeds niet herkend worden)

Dus nog even in het kort , nee zo'n bestand kan niet zomaar spontaan iemand infecteren , maar wel is het zeer goed mogelijk om deze taktiek in een aanval met meerdere stages te gebruiken.

@huismus
"Maar, een virusscanner kan dit dan dus weer opmerken.
De 'header', de kleine stukje virus-code wat niet verpakt kan worden d.m.v. DissidentX kan door een virusscanner worden gedetecteerd, waarna deze alarm kan slaan."
Ik heb geen flauw idee waarom een header van een malware executable niet encrypted zou kunnen worden , sterker nog , ik ben er volledig van overtuigd dat het HELE bestand inclusief header ingepakt word.
Misschien zou je die claim ergens mee kunnen onderbouwen ?

@drdelta

Die link die je geeft (blog.sucuri.net/2013/07/malware-hidden-inside-jpg-exif-headers.html) is best een goede , maar in tegenstelling tot wat jij beweerd ondersteund die niet het verhaal van huismus maar is wel een prima voorbeeld waarom dit soort steganografie in bepaalde situaties zeer effectief kan zijn.

[Reactie gewijzigd door Anoniem: 533809 op 17 januari 2014 07:11]

Het gaat erom dat je het virus (dus simpelweg de 0 en 1 waaruit deze bestaat) in een afbeelding kan (ver)stoppen.

Een exploit in het lezen van afbeeldingen kan dan alsnog gebruik maken van de data die in die afbeelding opgeslagen zit. Waarom niet?
Dat gaat dus NIET werken. Heel simpel: om het virus uit te lezen heb je de tool nodig die de hash waarde van het plaatje berekend en omzet naar bruikbare data (DissidentX dus).

Ook al zou er een bug zitten in de image viewer: die "ziet" het virus simpelweg niet.

Als je een virus in een truecrypt container propt dan kan daar ook niets mee gebeuren zonder de sleutel. Het zou toch leuk zijn als een virus anders wordt behandeld dan de normale data in de container ;)

Als er straks tools komen die de hashwaarde automatisch lezen voor je zou het kunnen :)
Eigenlijk gaat deze discussie nergens over. Als een mallformed image code uit kan voeren (d.m.v. buffer overflow of een andere exploit) kan er ook gewoon een virus gedownload worden.

Aan de andere kant is dit wel dé aanpak voor NSA of een organisatie die een dissident wil hacken - die heeft immers DissidentX op z'n computer geïnstalleerd:
  • Koop een jpg-exploit
  • Verpak het virus in de image m.b.v. DissidentX
  • Mallformed jpg zorgt ervoor dat er code kan worden uitgevoerd
  • Pak de hardcoded hash die bij de mallformed code staat en decrypt het échte virus
Maar, een virusscanner kan dit dan dus weer opmerken.
De 'header', de kleine stukje virus-code wat niet verpakt kan worden d.m.v. DissidentX kan door een virusscanner worden gedetecteerd, waarna deze alarm kan slaan.

Dit kan een tijdje onopgemerkt gaan, totdat alle virusscanners de exploit aan hun databases hebben toegevoegd.

Het maken van een permanent onzichtbaar, werkend virus is hiermee dus van de baan. Wel kan een niet-functioneel virus (dus eigenlijk een bericht) worden verstuurd tussen computers, zoals hierboven ook al werd gezegd.
Aanvullende informatie om Huismus te ondersteunen:
Malware Hidden Inside JPG EXIF Headers
Een gecodeerd bestand moet ook weer gedecodeerd worden met een sleutel. Wil iemand jou dus kwaad doen moet hij op jouw pc het bestand decoderen. Als hij toch al zo ver is dat hij dit kan is het nutteloos om dit op deze manier te doen.

Een eenvoudige encryptie methode die al een tijd bestaat is het verhogen of verlagen van de RGB pixelwaardes in een plaatje. Alle even waardes worden als een 1 gezien en alle oneven waardes als een 0. Alle 1en en 0en op een rij bevatten dan iedere gewenste boodschap. Mocht jij een plaatje op je pc hebben met zo'n gecodeerde boodschap (of een virus), dan kan dit plaatje niet schadelijk zijn zolang dit plaatje niet gedecodeerd wordt.

Dit soort programma's kunnen dus niet zo maar gebruikt worden om pc's te infecteren zoals jij dit beschrijft. Het zijn gewoon ideale programma's om bestanden voor iemand anders te verbergen (om dus juist uit handen te blijven van organisaties zoals de NSA ;) )

[Reactie gewijzigd door Brandts op 16 januari 2014 14:58]

Virussen in plaatjes hoef je inderdaad niet te coderen.. Gewoon gebruik maken van de manier waarop hij geladen wordt. nieuws: 'JPEG of death'-hoax na 10 jaar werkelijkheid
Ja inderdaad was ook mijn gedachten, als je een RAM-scraper gebruikt dan kun je gedecodeerde informatie gewoon uitlezen en ergens anders opslaan.

Zie ook dit bericht: nieuws: 'Meer Amerikaanse winkelketens zijn slachtoffer hackaanvallen'
Maar dan moet je dus eerst die scraper al zien te installeren, dus dan is het slachtoffer al feitelijk geinfecteerd. Dat wil niet zeggen dat zo'n scraper niet nuttig kan zijn, je zou dus de sleutels uit kunnen lezen zodat je alleen de bestanden hoeft te onderscheppen en je het niet meer van de betroffen pc hoeft te plukken.

Tevens moet je er nog voor zorgen dat de gebruiker het bestand als een gecodeerd bericht herkent zodat de gebruiker daadwerkelijk een actie onderneemt om het te laten decoderen, dus zit je wel met een complexe aanvalsvector om de gebruiker daartoe te bewegen, waarbij het ook nog eens target specifiek is. Het kiezen voor een bestand dat viral gaat zodat zou wellicht gebruikt kunnen worden, maar grappigfilmpje.mpg wordt dan normaliter gewoon afgespeeld zonder dat de payload gedecodeerd wordt tenzij dissidentx elk geopend bestand direct analyseert, het wachtwoord opslaat en direct berichten decodeert. Maar dat is wel een erg slecht beleid voor een programma dat primair bedoeld is voor privacy.
Bij elke 'goede' uitvinding, is er altijd wel iemand die er de negatieve versie van uit brengt.
Dan kan je dus ook een virus in een afbeelding verstoppen of de NSA een programmaatje in je webbrowser. Ik moet zeggen dat ik het maar gevaarlijk vind.
Niet een virus, een versleutelde versie van een virus die er alleen met zeer specifieke software uit te halen is. Je hoeft niet bang te zijn dat dat verborgen virus je computer infecteert.
Ik zal nooit beweren dat iets echt niet kan, maar dat is hoogst onwaarschijnlijk. Je moet als ontvanger van het bericht bog altijd beschikken over de juiste sleutel om de info uit het bestand te halen. Als iemand mij dus een bestand stuurt, waar ook een virus in zou zitten, moet ik ook beschikken over de sleutel om het virus uit het bestand te sleutelen.

Het is erg onwaarschijnlijk dat je een onschuldig bestand krijgt van iemand en dan de juiste sleutel krijgt om uit dat bestand nog meer te halen. Als je even nadenkt doe je dat niet en gebruik je alleen sleutels van aan jou bekende auteurs.
Om de data weer uit de bestanden te halen, moet je weer een programma gebruiken. Het is dus niet zo dat je plots een afbeelding opent en je computer overgenomen zal kunnen worden door een hacker.
Beveiliging 101: security through obscurity is no security at all.
Nu vraag ik mij af in hoeverre het bestand waarin je het bericht verstopt nog intact blijft?

Als er allemaal willekeurige bits in bijvoorbeeld een afbeelding worden aangepast, kan een gewone image reader deze afbeelding toch niet meer (correct) weergeven? Zelfs als je nog maar 1 bit verandert van een afbeelding, kan dit al effect hebben op de helft van de afbeelding en allemaal kleurveranderingen veroorzaken.

Een andere oplossing zou zijn dat ze het bericht verstoppen in de metadata van het bestand, maar dan is het natuurlijk weer veel te gemakkelijk op te sporen.
Je kan gebruik maken van aanwezige error correctie-mechanismen. Deze QR-code is bijvoorbeeld verminkt met een niet zo verborgen boodschap ;) maar is nog wel te scannen.
Bij veel bestanden kan zoiets wel, maar bij veel ook niet. Ik vind de stelling uit de topictitel dat het bericht in een willekeurig bestand kan worden verstopt dan ook wel wat sterk. In bijvoorbeeld sourcecode, tekstbestanden, executables, of versleutelde bestanden zulen de verstopte gegevens al snel opvallen.
Als je in een 24 bit plaatje bijvoorbeeld de minst significante bits vervangt door een (eventueel versleutelde) boodschap ziet het plaatje er voor het blote oog nog steeds hetzelfde uit. Het plaatje is daarmee niet "corrupt".

Een goed startpunt over steganografie:
http://nl.wikipedia.org/wiki/Steganografie
A single decoder for all file types and encoding techniques, including all future ones
Aangezien DissidentX werkt op alle file types lijkt er geen onderscheid gemaakt te worden tussen de inhoud van de bestanden. Ik kan het mis hebben - aangezien ik de source niet heb bekeken.
Zelfs als je nog maar 1 bit verandert van een afbeelding, kan dit al effect hebben op de helft van de afbeelding en allemaal kleurveranderingen veroorzaken.
Juist niet. Bij afbeeldingen verander je dan namelijk maar 1 pixels, en daarvan slechts een heel kleine intensiteit verandering, die je nauwelijks kan zien.

JPG is een lossy compressie, hetgeen betekent dat er talloze pixels zijn die anders zijn dan het orgineel. Maar wij zien dat verschil absoluut niet! Juist omdat een afbeelding geen kritische data is.
Dat word dus flink cashen voor Cohen. Als Haystack nu onveilig wordt geacht is het alternatief de software die hij nu ontwikkeld. Heel Iran over op DissidentX, reken maar uit :).
Hoe werkt dit voor willekeurige bestanden? Ik begrijp dat het kan in een image, audiobestand of film. Daar zie je bepaalde veranderingen niet, of worden ze opgevangen door de error correctie mechanismes die bij het file format horen. Maar hoe werkt in het in het algemene geval, zeg, een plain text bestand? Daarin kan je veranderingen toch altijd zien? En een executable, die gaat toch gewoon stuk als je bitjes gaan verstoppen op plaatsen waar ze niet thuis horen?
De titel van dit artikel is niet heel goed gekozen. In de gepresenteerde versie van DissidentX zitten alleen encoders voor tekstbestanden. Voor andere type bestanden moeten specifieke encoders geschreven worden (tenminste, als de bestanden bruikbaar moeten blijven).
Anoniem: 225253
17 januari 2014 13:24
Dit zullen terroristen en dievenbendes graag horen om ongemerkt berichten uit te wisselen.
Hoe dan? Geef eens een voorbeeld? Het is makkelijk schreeuwen zo.

Stel dat je 1 KB aan data kan verbergen in 100 KB - wat mij al erg optimistisch lijkt - dan moet je 100 keer zoveel (!) data downloaden om de illegale download binnen te halen. Dit betekent dat jouw MKV van 14GB niet binnen 2 is uur gedownload, maar pas na 20 uur. Niet erg praktisch, niet?
Dit is inderdaad niet praktisch in vergelijking met de mogelijkheden van nu. Maar als een MKV van 14 GB in de toekomst helemaal niet te downloaden is, is dit natuurlijk wel een mooie oplossing (al duurt het downloaden 20 uur).
Het downloaden van 14Gb aan tekstbestanden en willekeurige foto's gaat niet opvallen?

Ik heb hier ook al eens over gebrainstormd met vrienden in de ICT maar het is bijna niet uitvoerbaar. Stel je download nu iedere maand 300Gb, muziek spelletjes en films.
Dit zijn bijvoorbeeld 20 "files" (films/programma's). Als je verder geen groot gebruiker bent dan gaat het opvallen als je opeens +/- 30.000 foto's en andere documenten gaat downloaden.

Verder zou je dit wel kunnen toepassen in filmpjes die dan vrij op youtube te plaatsen zijn. Dit rippen en je hebt decoderen met een sleutel dat je van een forum krijgt en je kan zo kleine bestanden binnen halen.
Met al die Free To Play games van tig GB elk, is het echt niet lastig te verklaren waarom je grote hoeveelheden data download. 'Was gewoon wat nieuws aan het zoeken/uitproberen'.

Nog los gezien van serieuze online gamers die daarnaast constant online zijn met game, IRC, voicechat, internet voor fora en/of builds onderzoeken, youtube voor tactieken, wifi op mobieltje en tablet, software updates op alle appartaten/software, etc....

Gooi daar de mogelijkheid van meerdere berichten in zoals het artikel aangeeft - waardoor als iemand komt controleren je een leuke gimmick sleutel geeft, die bij de game past en bijvoorbeeld vrij op de sites te vinden is voor iedereen - en je komt aardig dicht in de buurt bij het punt waar traceren en schuldig verklaren erg lastig wordt.


Bovendien zul je ook nog eens aan moeten tonen dat iemand zowel de 2e/3e/4e.. sleutel van het bestand heeft (gehad) en daarnaast moedwillig heeft gedownload puur voor het verborgen bestand.

Tenslotte zul je ook een redelijke verdenking moeten hebben. Misschien heb ik dat bestand versleuteld omdat ik iets waardevols zoals een BitCoin Wallet erin verstopt heb?

[Reactie gewijzigd door Xanaroth op 16 januari 2014 15:36]

Anoniem: 415197
@Xanaroth16 januari 2014 17:57
Tenslotte zul je ook een redelijke verdenking moeten hebben.
Dit dus. Als iemand nou eens een handig programmaatje schrijft dat werkt met bestanden die eruit zien als ruis, dan kun je altijd zeggen dat dat programmaatje de data heeft gegenereerd (terwijl het stiekem gewoon encrypted data is).

En anders kun je zeggen: "maar ik ben wiskundige en ik ontwikkel random number generators; die bestanden gebruik ik voor mijn onderzoek".

[Reactie gewijzigd door Anoniem: 415197 op 16 januari 2014 17:58]

Anoniem: 382732
@Brandts16 januari 2014 21:02
Die kan je dan gewoon legaal downloaden via diverse contentleveranciers, als bestand of gestreamd. Gewoon voor een normale prijs.
Maar dan heb je wel een bult met foto's!
Ik weet niet of ik je snap, maar als je bedoelt dat 14 GB aan MKV in 140 GB aan foto's moet zitten dan hoeft dat niet zo te zijn. Het kunnen allerlei bestanden zijn.

In principe kan je ook simpelweg encryptie toepassen, want dan kan diegene in het midden ook niet zijn wat voor data er wordt verstuurd. Alleen waar vandaan en waar naar toe.

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee