Computerbeveiliging - Hoe je bad guys buiten de deur houdt

sha256 onder Windows zonder tools

10-09-2014, 00:24 door Erik van Straten, 17 reacties
Laatst bijgewerkt: 10-09-2014, 00:27
Windows bevat, out of the box, geen programma's om cryptografische hashes van bestanden mee uit te rekenen, zoals md5sum, sha1sum en sha256sum.

Voor degenen die niet precies weten wat een cryptografische hash is: [1] is wat oud maar geeft een helder overzicht.

Nu kun je dergelijke programma's downloaden, maar deze zijn zelden voorzien van een Authenticode signature (die je kunt en hoort te controleren voordat je zo'n programma de eerste keer start). En als er al hashes van gepubliceerd worden (hopelijk niet op dezelfde server als waar de downloads staan), zit je met een kip-ei probleem...

Het programma fciv.exe van Microsoft (te downloaden via [2]), is wel voorzien van een Authenticode signature. Echter, de download en het uitgepakte programma zijn 10 jaar geleden digitaal ondertekend, de timestamp gebruikt MD5 als handtekening en onderin de dialoogbox met details over het code-signing certificaat zie ik, achter Extended Error Information: "Revocation Status : The revocation function was unable to check revocation because the revocation server was offline" (vreemd, want met Wireshark zie ik dat er wel een CRL file wordt gedownload). In elk geval biedt dit niet veel vertrouwen. Een ander nadeel is dat fciv.exe slechts md5 en sha1 hashes kan berekenen.

Stel je zit op een machine waar je helemaal niet op mag of kunt downloaden, wat dan?

Mits Powershell en .NET (ik vermoed dat je minstens 4.0 nodig hebt) op de computer staan en je niet bang bent voor werken op de commandline, zijn er allerlei scripts die je kunt downloaden. Echter, vaak zijn die complex doordat ze allerlei extra functionaliteit aan boord hebben en daardoor niet snel te doorgronden zijn, waardoor je niet weet wat je binnenhaalt en uitvoert. Bovendien vereisen dit soort scripts dat je Powershell minder veilig maakt: standaard weigert Powershell zomaar scripts vanaf de schijf uit te voeren.

Die beperking geldt niet als je Powershell start en het script vervolgens overtikt. Hoewel dat mag kun je gelukkig ook kopiëren en plakken ;) Er is wel een nadeel aan deze aanpak: zodra je Powershell afsluit worden de scripts vergeten. Dit moet dus echt als een noodoplossing worden gezien!

Ik begin met de source van het script (oorspronkelijke bron: [3]):
--------------------------------------------------------------------------------
function md5 {
param ($filename = $(throw "Filename parameter is required."))
$file = [system.io.file]::openread((resolve-path $filename))
$hash = [System.Security.Cryptography.md5]::create().computehash($file)
[system.bitconverter]::tostring($hash).toLower() -replace "-",""
}
function sha1 {
param ($filename = $(throw "Filename parameter is required."))
$file = [system.io.file]::openread((resolve-path $filename))
$hash = [System.Security.Cryptography.sha1]::create().computehash($file)
[system.bitconverter]::tostring($hash).toLower() -replace "-",""
}
function sha256 {
param ($filename = $(throw "Filename parameter is required."))
$file = [system.io.file]::openread((resolve-path $filename))
$hash = [System.Security.Cryptography.sha256]::create().computehash($file)
[system.bitconverter]::tostring($hash).toLower() -replace "-",""
}
function sha384 {
param ($filename = $(throw "Filename parameter is required."))
$file = [system.io.file]::openread((resolve-path $filename))
$hash = [System.Security.Cryptography.sha384]::create().computehash($file)
[system.bitconverter]::tostring($hash).toLower() -replace "-",""
}
function sha512 {
param ($filename = $(throw "Filename parameter is required."))
$file = [system.io.file]::openread((resolve-path $filename))
$hash = [System.Security.Cryptography.sha512]::create().computehash($file)
[system.bitconverter]::tostring($hash).toLower() -replace "-",""
}

--------------------------------------------------------------------------------

Zoals je ziet zijn er 5 bijna identieke functies. Het enige dat steeds verschilt is de naam van de functie en de naam van de te gebruiken hashfunctie achter "System.Security.Cryptography.".

Het doel van bovenstaande functies is dat je straks op de Powershell commandline bijvoorbeeld kunt intikken:
md5 test.txt
en dat dit de md5sum van test.txt (of elk ander bestand naar keuze) oplevert, en idem voor bijvoorbeeld sha256. De scripts werken met bestanden > 4GB maar zijn niet zo snel als echte exe files. Ze ondersteunen ook geen "wildcards" (zoals * en ?) als parameter. Je kunt wel een pad aangeven, bijv. sha256 c:\windows\notepad.exe.

Hoe gaat dit in z'n werk:
1) Start cmd.exe
2) Achter de commandprompt tik je powershell gevolgd door enter. Het resultaat kan dan bijv. zijn:
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS C:\>
Doordat de regel met PS begint weet je dat je "in Powershell zit".

3) Vervolgens selecteer je bovenstaande functies tussen de beide strepen (exclusief dus) en kopieer die naar het klembord. Desgewenst kun je ook slechts 1 functie kopiëren en plakken (een functie befint met het woord "function" en eindigt met de accolade-sluiten op de verder lege regel, beide horen er nog bij).
4) Daarna maak je het venster met de prompt weer actief.
5) Klik met de rechter muistoets ergens in het commandprompt venster (maakt niet uit waar) en kies plakken (of paste) uit het menu. Nb. de toetsencombinatie Ctrl-V werkt hier niet!
6) Als onderste regel bestaat uit >> moet je nog een enter geven, dan verschijnt de "pad" prompt weer.
7) Als in de betreffende map een bestand test.txt staat kun je nu bijvoorbeeld uitvoeren:
sha256 test.txt

Als test.txt de volgende inhoud heeft (in notepad/kladblok aanmaken is dit 1 regel zonder enter(s) achter de tekst, de lengte van het bestandje moet exact 43 bytes zijn):
The quick brown fox jumps over the lazy dog
zijn de resultaten als volgt:

PS C:\> md5 test.txt
9e107d9d372bb6826bd81d3542a419d6
PS C:\> sha1 test.txt
2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
PS C:\> sha256 test.txt
d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
PS C:\> sha384 test.txt
ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1
PS C:\> sha512 test.txt
07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1b
fd7097821233fa0538f3db854fee6
PS C:\>

In o.a. [4] kun je controleren dat dit klopt (of Google naar de hashes). Nb. die laatste hash (sha512) paste niet op 1 regel op dit forum, ik heb er een enter in moeten geven, het hoort 1 regel te zijn).

Toelichting op de functies:
In de 1e regel wordt gecontroleerd of er een parameter (filename) is meegegeven.
In de 2e regel wordt de file voor lezen geopend (de filehandle komt in de $file variabele).
In de 3e regel wordt de hash uitgerekend en in de variabele $hash gezet. Dit is echter nog geen karakterreeks.
In de 4e regel wordt de binaire hashwaarde omgezet in een karakterreeks, worden hoofdletters in kleine letters veranderd en worden elk streepje dat steeds tussen 2 bytes staat uit de karakterreeks verwijderd. het resultaat wordt automatisch op het scherm "afgedrukt".

Belangrijke security-overweging: zorg dat je begrijpt wat code vanaf internet doet voordat je deze in gebruik neemt.

Succes!

[1] http://www.unixwiz.net/techtips/iguide-crypto-hashes.html
[2] http://support.microsoft.com/kb/841290
[3] http://blogs.msdn.com/b/mwilbur/archive/2007/03/14/get-sha256.aspx
[4] https://en.wikipedia.org/wiki/MD5
Reacties (17)
10-09-2014, 10:13 door Anoniem
Andere snelle tip; upload het bestand naar Virustotal, dan krijg je ook de hashes te zien.
Overigens, een handige VT check en upload tool is VT Hash Check, en die is bovendien ook te controleren dmv een GPG signature:
http://www.boredomsoft.org/vt-hash-check.bs
10-09-2014, 17:46 door Anoniem
Erik, jouw manier lijkt me een veilige methode, maar is ook nogal bewerkelijk.

Wie nog enig vertrouwen in andere bedrijven en in internet heeft, kan misschien ook dit overwegen:
http://www.digitalvolcano.co.uk/hash.html
Programmaatje "MD5Hash_setup.exe" is in staat om de volgende hashes te berekenen:
MD5, sha1, sha256, sha384,sha512 en CRC-32.
Het is gratis, en het gedownloade installatiebestand is met geldige Authenticode sha1-ondertekend.
Verder goedgekeurd door:
https://www.virustotal.com/en-gb/file/c5220e333f75c244de63b8905dc4e6b2c47f9b85d906d37dd601f8ce14cea06c/analysis/
Zelf in de gauwigheid nog geen gekke dingen gezien op wireshark bij gebruik van deze tool.

De hash-resultaten kun je gemakkelijk in een file opslaan of naar het clipboard kopiëren. Er is zelfs een optie die je "aan"
kunt zetten bij installatie, om via de rechtermuisknop een file rechtstreeks naar de hastool te zenden. Best handig!
Overigens vereist dit programma wel dotNET, die het programma desnoods zelf van Microsoft zal ophalen en installeren
als het op je computer ontbreekt. (het vereist NetFx20SP2_x86.exe, of anders dotnetfx35.exe)


Een alternatief waarbij geen .NET vereist is: https://github.com/jessek/hashdeep/releases/tag/release-4.4
(source code beschikbaar, met de mogelijkheid om het eventueel zelf te compileren indien gewenst)
Ik dacht dat ook de WSUS-offline tool deze set van commandline hashtools gebruikt
om de gedownloade update-bestanden te auditen.

Doe er je voordeel mee,
Mvg, cluc-cluc
10-09-2014, 19:41 door Anoniem
ik gebruik voor win omgeving

http://md5deep.sourceforge.net/

betrouwbaar, gecontroleerd, virus/trojan vrij, onderhouden, gratis, sterk.

evengoed bedankt topicstarter, altijd handig en leerzaam!

groetjes!
11-09-2014, 01:43 door Anoniem
Wat is de reden dat die lange hashes zoveel gebruikt worden? Ik gebruik zelf alleen de crc32 code, omdat die slechts 8 tekens lang is. Die kun je bijvoorbeeld plaatsen in de bestandsnaam als de laatste 8 tekens. Dan hoef je niet eens meer een apart bestand bij te houden met de hashes.

Is er met een bestand geknoeid (of bij dataverlies) dan is de crc32 code niet meer hetzelfde, en de andere hashes ook niet, neem ik aan. Dus je hoeft maar 1 methode te gebruiken, of is dat te simpel beredeneerd?
11-09-2014, 23:19 door Erik van Straten - Bijgewerkt: 12-09-2014, 00:22
2014-09-10, 10:13, door Anoniem: Andere snelle tip; upload het bestand naar Virustotal, dan krijg je ook de hashes te zien.
Meestal wel, maar bij heel grote files gaat dit niet (ik heb tools op m'n PC o.a. getest met een VHD file van 6GB). Ook vertouwelijke info zou ik niet uploaden naar VT (van Google). Als je "op afstand", bijv. telefonisch, met iemand wilt afstemmen of een document in het bezit van beiden identiek is, is een hashtooltje erg handig.

2014-09-10, 10:13, door Anoniem: Overigens, een handige VT check en upload tool is VT Hash Check, en die is bovendien ook te controleren dmv een GPG signature:
http://www.boredomsoft.org/vt-hash-check.bs
Die tool kan handig zijn, maar is beperkt tot MD5 en SHA1 (daarom valt deze tool af voor mij). Voordat je het kunt gebruiken: de public key van de auteur is niet op veel plaatsen te vinden (op de server zelf zegt natuurlijk niet zoveel, en een aanvaller kan ook hebben geupload maar pgp.mit.edu). Daarnaast zul je dan toch eerst PGP of GnuPG op je computer moeten hebben.

Eind vorige week is GPG4Win v2.2.2 verschenen (http://www.gpg4win.org/). De download is voorzien van een halve Authenticode signature (geen timestamp) en helaas wordt MD5 als hash algoritme gebruikt. Ik heb de makers van GPG4Win hier afgelopen zondag een mail over gestuurd en gisteren antwoord ontvangen dat ze naar hun codesigning proces zullen kijken.

Edit: tekst leek te suggereren dat ik geprobeerd heb 6GB te uploaden naar VT 8^) - aangepast.
11-09-2014, 23:25 door Erik van Straten
2014-09-10, 17:46, door cluc-cluc: Wie nog enig vertrouwen in andere bedrijven en in internet heeft, kan misschien ook dit overwegen:
http://www.digitalvolcano.co.uk/hash.html
Programmaatje "MD5Hash_setup.exe" is in staat om de volgende hashes te berekenen:
MD5, sha1, sha256, sha384,sha512 en CRC-32.
Het is gratis, en het gedownloade installatiebestand is met geldige Authenticode sha1-ondertekend.
Het is inderdaad een prima tooltje! De Authenticode signature is helemaal correct, maar maakt nog wel gebruik van SHA1 hashes.
Ook ik heb niet gezien (eveneens met Wireshark) dat de tool naar huis "belt". In de infobox die verschijnt na Help|About zit "Check for updates", maar start slechts je webbrowser met als URL http://www.digitalvolcano.co.uk/hash.html.

De tool gaat goed om met bestanden in C:\Windows\System32\ en (in elk geval SHA256) geeft de juiste hash bij een bestand van 6GB. Prima, deze blijft geïnstalleerd bij mij!

2014-09-10, 17:46, door cluc-cluc:Een alternatief waarbij geen .NET vereist is: https://github.com/jessek/hashdeep/releases/tag/release-4.4
(source code beschikbaar, met de mogelijkheid om het eventueel zelf te compileren indien gewenst)
Een oudere versie daarvan had ik al een paar jaar op m'n computer staan, die kwam nog vanaf http://md5deep.sourceforge.net/.

Toch gebruikte ik ze amper, in plaats daarvan gebruikte ik "coreutils-6.11" uit http://blog.nfllab.com/archives/152-Win32-native-md5sum,-sha1sum,-sha256sum-etc..html omdat die wat intuïtiever werken (sources staan erbij). Echter zij kunnen geen bestanden hashen in de "echte" C:\Windows\System32\ map (http://blog.nfllab.com/archives/152-Win32-native-md5sum,-sha1sum,-sha256sum-etc..html#c1333 beschrijft de oorzaak daarvoor).

Als je commandline tools zoekt is de nieuwe versie van "hashdeep" zeker aan te raden, er zitten nu ook 64bit binaries bij. Hashes van versie 4.4 die ik gisteren gedownload heb vind je in https://www.virustotal.com/en/file/d5e85933e74e5ba6a73f67346bc2e765075d26949c831a428166c92772f67dbc/analysis/ (onder de tab Analysis).

Echter, ik vind de namen van de executables teveel tikwerk (bijv. "sha256deep64"). Lastig: als je sha256deep64.exe hernoemt in bijv. sha256.exe, werkt deze niet meer. De reden daarvoor is dat het programma op basis van z'n eigen bestandsnaam vaststelt welk hash algoritme gebruikt moet worden, door deze truc kunnen is de codebase (d.w.z. de sources) voor alle 32bit- en alle 64bit executables identiek. Interessant is dat de programmeur ze wel allemaal gecompileerd en gelinkt heeft, want de files zijn niet binair identiek (een paar bytes verschillen).

Bovendien vind ik de volledige padnaam van de gehashte file in de output overdreven, de commandline parameter "-b" voorkomt dat. In dit soort gevallen brengt een batchfile uitkomst:

@echo off
C:\Utils\sha256deep64.exe -b %1

Deze batchfile gaat ervan uit dat sha256deep64.exe in C:\Utils\ staat. Als je die batchfile als sha256.bat opslaat in een map die voorkomt in PATH heb je hem altijd bij de hand.
11-09-2014, 23:27 door Erik van Straten
2014-09-10, 19:41, door Anoniem:http://md5deep.sourceforge.net/
Inderdaad prima, de laatste versies zijn alleen verhuisd naar github. Zie ook de bijdrage van cluc-cluc en mijn bijdrage hierboven.
2014-09-10, 19:41, door Anoniem: evengoed bedankt topicstarter, altijd handig en leerzaam!
Graag gedaan!
12-09-2014, 00:18 door Erik van Straten - Bijgewerkt: 12-09-2014, 01:09
2014-09-11, 01:43, door Anoniem: Wat is de reden dat die lange hashes zoveel gebruikt worden? Ik gebruik zelf alleen de crc32 code
CRC (Cyclic Redundancy Check) codes zijn ontworpen om onopzettelijke wijzigingen (corruptie) te detecteren. Ze zijn totaal ongeschikt om opzettelijke wijzigingen vast te stellen; het is niet moeilijk (en kost nauwelijks rekentijd) om een bestaand bestand zo te wijzigen dat deze het door de aanvaller gewenste gedrag vertoont (bijv. een executable met malware of een rekening waarin het bankrekeningnummer is gewijzigd) en toch dezelfde CRC32 hash oplevert.

Een goede cryptografische hash detecteert, met gigantische zekerheid, dat een bestand niet bewust is gemanipuleerd (ook onopzettelijke wijzigingen zullen met extreem grote zekerheid worden gedetecteerd).

Van belang is hier vooral de "second-preimage resistance". Dat wil zeggen, gegeven een bestaand bestand, hoe groot is de kans dat je een (willekeurig) binair afwijkend bestand kunt vinden dat exact dezelfde hash oplevert. Lastiger te realiseren maar ernstiger is een "chosen prefix collision attack": d.w.z. een bestand dat deels of geheel naar eigen inzicht door de aanvaller is ingevuld plus een X aantal bytes die ervoor zorgen dat het bestand dezelfde hash oplevert.

Nb. dit is fundamenteel iets anders dan "collision resistance", dat is de kans dat het je lukt om twee verschillende bestanden (ongeacht inhoud en lengte, die mag je zelf bepalen), te vinden die dezelfde hash opleveren. Deze aanval is (relatief) veel eenvoudiger, niet alleen door de "birthday paradox", maar vooral doordat middels analyse van het hashalgoritme beredeneerd kan worden welke bitjes in de inputfiles een bepaald effect op de hash zullen hebben. In de praktijk heeft een kwaadwillende aanvaller hier niets aan. Het is wel een aardige maatstaf waarmee wetenschappers aantonen dat er "haarscheuren" in een hashalgoritme zitten.

MD5 is qua collision resistance compleet gebroken; SHA1 is flink verzwakt.

V.w.b. "chosen prefix" resistance staat vast dat je met dikke computers MD5 kunt kraken (http://www.cwi.nl/nieuws/2012/cwi-cryptanalist-ontdekt-nieuwe-cryptografische-aanvalsvariant-in-flame-virus). De vrees bestaat dat SHA1 binnenkort (enkele jaren?) volgt, daarom staat het de afgelopen weken zo onder druk.

Een aardige beschrijving van de problemen met SHA1 (en MD5) vind je hier: https://konklone.com/post/why-google-is-hurrying-the-web-to-kill-sha-1. Er staat wel een dubieuze zin in: "Collisions are always theoretically possible, but they're supposed to be so rare as to be practically impossible".

De auteur bedoelt dat de kans dat je ooit een collision tegenkomt (of vindt als je ernaar zoekt) extreem klein hoort te zijn; het aantal collisions voor een gegeven bestand is echter oneindig. De reden hiervoor is dat de hash zelf een eindige lengte heeft en dus een eindig aantal waarden kan bevatten, terwijl je een oneindig aantal bestanden kunt bedenken. Als je er maar genoeg tijd voor hebt en neemt...

Edit: typo en enkele aanvullingen
Aanvulling: de woorden gnu en codding hebben beide een CRC32 waarde van 0x69c8c72d. Bron: http://www.reddit.com/r/linux/comments/18cj7u/out_of_98569_words_in_my_usrsharedictwords_one/, maar zie ook de bijdrage daar direct onder!
12-09-2014, 17:47 door Anoniem
Echter, ik vind de namen van de executables teveel tikwerk (bijv. "sha256deep64"). Lastig: als je sha256deep64.exe hernoemt in bijv. sha256.exe, werkt deze niet meer.
Erik, je kunt ook "hashdeep.exe" (met zijn hele scala aan opties) gebruiken i.p.v. de afzonderlijke executables.
Er zijn allerlei truukjes voor wat meer gemak. Ik noem er één. Ongetwijfeld weet jij het dan zelf naar je hand te zetten
zonodig door je nog wat verder te verdiepen in de vele mogelijkheden, waaronder ook een audit van hashes.
Het mooie van commandline tools is dat je ze in batch kunt uitvoeren. Je kunt bijvoorbeeld het volgende doen:

1. Strip van de folder in de uitgepakte folder voor het gemak "4.4" er even af, zodat deze folder "md5deep" heet,
en sleep daarna deze folder compleet met inhoud uit de "parent"-folder naar je bureaublad.
2. Maak eenmalig een folder "hashfiles" op je bureaublad.
3. Maak eenmalig een bestand "hashdeep.bat" op je bureaublad met de volgende inhoud:

@echo off
.\md5deep\hashdeep.exe -c sha256 -b .\hashfiles\*.* > hashresults.txt


(de optie -c sha256 bepaalt dat er alleen maar sha256 zal worden berekend; maar md5 en/of sha1 zijn o.a. ook mogelijk
door dit even aan te passen.

Kopieer/sleep (of evt. verplaats indien mogelijk) nu alle files (naar wens één file of meerdere) waarvan je de sha256-hash wilt weten naar de folder "hashfiles". Start daarna "hashdeep.bat". (dubbelklik)
(wat ook nog kan is .\hashfiles\*.* in de batchfile even aanpassen met bijv. drive:\pad\bestandsnaam etc.
Kan zijn dat je dit liever doet dan kopiëren bij een 6GB bestand, in geval het bestand niet snel kan worden verplaatst)

Ergens op je bureaublad verschijnt hierna een bestand "hashresults.txt" waarin de berekende hashes staan.
(hashresults.txt kun je altijd laten staan: een nieuwe hashberekening overschrijft stilzwijgend de oude resultaten)
Open dit tekstbestand, en je ziet daar dan keurig op een rijtje: "size ,berekende sha256-hash, bestandsnaam"
van alle afzonderlijke bestanden die zich in de folder hashfiles bevonden.

Naast flexibiliteit en extra functionaliteit kan een bijkomend voordeel van deze commandline tool zijn dat er geen .NET geïnstalleerd hoeft te worden.

En nog bedankt Erik voor je vorige reactie(s). Altijd een genoegen om even wat kennis met je uit te wisselen,
en laat een ieder op security.nl er ook zijn/haar voordeel mee doen.
Mvg, cluc-cluc.
13-09-2014, 15:17 door Erik van Straten
Door cluc-cluc: Erik, je kunt ook "hashdeep.exe" (met zijn hele scala aan opties) gebruiken i.p.v. de afzonderlijke executables.
Weet ik, maar goed dat je het noemt want andere lezers weten dat misschien niet.

Inderdaad kun je de hashdeep tools als een "poor mans IDS" (Intrusion Detection System) gebruiken door regelmatig van zoveel mogelijk bestanden op een computer een cryptografische hash te berekenen en het resultaat op een veilige plaats te bewaren (niet op de computer zelf). Door een vorig met een nieuw resultaat te vergelijken heb je een goede indicatie wat er in de tussentijd veranderd is (actieve rootkits en andere stealth malware kunnen je echter voor de gek houden).

Een van de eerste tools die zoiets deed (meen ik) was Tripwire.

Misschien wel grappig om te vermelden in het kader van hash collisions is het volgende. In http://www.mscs.dal.ca/~selinger/md5collision/, onder "An evil pair of executable programs", laat Peter Selinger zien dat het mogelijk is dat twee programma's, die iets verschillends doen, dezelfde MD5 hash hebben.

Een tikkie flauw, maar ook ik kan twee programma's maken die iets verschillends doen en dezelfde MD5 hash hebben. Sterker, ik kan het zo maken dat ze ook dezelfde SHA1 hash hebben! Om het lekker ingewikkeld te maken noem ik die programma's niet "hello.exe" en "erase.exe", maar "md5deep64.exe" en "sha1deep64.exe".

Eerst stellen we vast dat zowel de MD5 als de SHA1 hashes van md5deep64.exe en sha1deep64.exe identiek zijn:

g:\Temp>md5sum md5deep64.exe
1d90637d5fcf5c09c59fc3fade0bc79b *md5deep64.exe
g:\Temp>md5sum sha1deep64.exe
1d90637d5fcf5c09c59fc3fade0bc79b *sha1deep64.exe

g:\Temp>sha1sum md5deep64.exe
0149c8dce4132161cbaaf5b4a6ff0e31eb68a26d md5deep64.exe
g:\Temp>sha1sum sha1deep64.exe
0149c8dce4132161cbaaf5b4a6ff0e31eb68a26d sha1deep64.exe

Vervolgens gebruiken we die programma's met dezelfde parameters en constateren dat de output VERSCHILLEND is:

g:\Temp>md5deep64.exe -b test.txt
9e107d9d372bb6826bd81d3542a419d6 test.txt
g:\Temp>sha1deep64.exe -b test.txt
2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 test.txt

En dit gaat zover dat niet alleen de MD5 en SHA1 hashes overeenkomen, maar ook SHA256:

g:\Temp>sha256sum md5deep64.exe
4994759f3750764ec0b55956de7c4f6d2003eac22a40cc4f82bc25da3b26a112 *md5deep64.exe
g:\Temp>sha256sum sha1deep64.exe
4994759f3750764ec0b55956de7c4f6d2003eac22a40cc4f82bc25da3b26a112 *sha1deep64.exe

En als bonus (mocht je nog twijfelen ;)

g:\Temp>fc /b md5deep64.exe sha1deep64.exe
Comparing files md5deep64.exe and SHA1DEEP64.EXE
FC: no differences encountered

Als je me niet gelooft: kopieer md5deep64.exe naar sha1deep64.exe en herhaal wat ik hierboven laat zien.

PS ik Googlede even naar 9e107d9d372bb6826bd81d3542a419d6 en vond o.a. deze page: http://pastebin.com/8GvcJfKw. Daar heb ik geen verklaring voor... Iemand? Of zou het een geintje zijn?

En nog bedankt Erik voor je vorige reactie(s). Altijd een genoegen om even wat kennis met je uit te wisselen,
en laat een ieder op security.nl er ook zijn/haar voordeel mee doen.
Insgelijks!
10-09-2015, 20:36 door Rarsus
Hi, even wat iude topics aan het doornemen, deze viel me op.

De aanname in de eerste regel van het topic is al fout.
Certutil.exe is oob aanwezig in windows:

Met
certUtil -hashfile pathToFileToCheck [HashAlgorithm]
is te bereiken wat je wilt.

(De ondersteunde hashalgoritmes zijn: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512)
10-09-2015, 20:36 door Rarsus
[Verwijderd]
11-09-2015, 05:00 door Erik van Straten
10-09-2015, 20:36 door Rarsus: De aanname in de eerste regel van het topic is al fout.
Certutil.exe is oob aanwezig in windows:
Prima tip als je een Windows versie hebt waarop certutil.exe al aanwezig is, maar dat is lang niet altijd het geval - zeker niet bij desktop besturingssystemen.

Bovendien kun je (bij mijn weten) certutil.exe alleen maar downloaden als onderdeel van relatief grote pakketten die je moet installeren. Bijv. in https://technet.microsoft.com/en-us/library/Cc732443.aspx staat dat certutil.exe pas beschikbaar is als je "Certificate Services" hebt geïnstalleerd.
11-09-2015, 08:46 door Anoniem
In de titel staat "zonder tools" en dat is dan wel een wat rekbaar begrip. Topicstarter gebruikt vervolgens powershell en .Net.
Prima oplossingen en laat zien hoe opensource kan werken. Ik gebruik zelf heel veel python of Visual Basic for Applications. De laatste vooral in omgevingen waar ik, vanuit mijn rol, geen Admin rechten heb. Je kunt dan zoiets als wat in deze link staat gebruiken: http://www.mrexcel.com/forum/excel-questions/468698-sha256-hash-function.html


Ik heb ooit een MD5, SHA1, SHA256, SHA386 en SHA512 hash in-één-tool gemaakt. Deze is hier te downloaden: http://mget.nl/static/files/md5-sha-calculator-setup.exe, voor als je wel een tool wilt gebruiken.
11-09-2015, 10:05 door Anoniem
Door Erik van Straten:
10-09-2015, 20:36 door Rarsus: De aanname in de eerste regel van het topic is al fout.
Certutil.exe is oob aanwezig in windows:
Prima tip als je een Windows versie hebt waarop certutil.exe al aanwezig is, maar dat is lang niet altijd het geval - zeker niet bij desktop besturingssystemen.

Bovendien kun je (bij mijn weten) certutil.exe alleen maar downloaden als onderdeel van relatief grote pakketten die je moet installeren. Bijv. in https://technet.microsoft.com/en-us/library/Cc732443.aspx staat dat certutil.exe pas beschikbaar is als je "Certificate Services" hebt geïnstalleerd.

In Windows XP moest je CertUtil nog installeren mbv adminpak. in (alle) latere versies zijn CertUtil en CertReq standaard aanwezig.
11-09-2015, 16:26 door Anoniem
HashTab(tegenwoordig van Implbits is een handige tool die naast MD5 en verschillende SHA's ook nog een hele reeks andere hashes kan berekenen. Deze heeft ook een Authenticode signature die wel SHA1 is, al zit er ook geen timestamp bij.
Wat voor invloed heeft het gebrek aan een timestamp eigenlijk?
11-09-2015, 18:01 door Erik van Straten
11-09-2015, 16:26 door Anoniem: [...]
Deze heeft ook een Authenticode signature die wel SHA1 is, al zit er ook geen timestamp bij.
Wat voor invloed heeft het gebrek aan een timestamp eigenlijk?
Timestamping wordt om twee redenen toegepast:

1) Windows beschouwt een Authenticode signature (inclusief timestamp) ook als geldig nadat het signing certificaat is verlopen (of "parent" certificaten daarvan, en dat geldt ook voor de keten van timestamping certificaat). Hierdoor kun je, zonder foutemldingen, installatiebestanden lang na het verlopen van certificaten blijven gebruiken. Het is natuurlijk discutabel of dat verstandig is. Aan de andere kant, als je dat niet zou doen, zou je nu Windows 7 wellicht niet meer kunnen installeren.

2) Als een private key gestolen wordt en het bekend is op welke datum dat is gebeurd e het intrekken van een certificaat aan die datum is gekoppeld, hoef je bestanden die voor die datum zijn gesigneerd niet te wantrouwen (en de fabrikant hoeft ze niet opnieuw te signeren en te distribueren).
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.