locked
Criteri restrizione software - Regola hash RRS feed

  • Domanda

  • Buonasera, avrei bisogno di una informazione tecnica. E' possibile configurare per Windows XP/7 una regola hash per inibire l'accesso ad un determinato software  utilizzando direttamente la riga di comando  e senza accedere alla GUI gpedit.msc? Praticamente, un modo per configurare la restrizione software tramite script e senza passare per l'interfaccia utente.

    Grazie, Marco

    domenica 7 luglio 2013 20:01

Risposte

  • Adesso ho capito...

    Purtroppo da linea di comando non conosco un modo per modificare le policy di gruppo legate alle restrizioni software (con secedit.exe puoi operare su quelle locali), ma se riesci a capire  quali chiavi di registro vengono modificate e dove sono salvati gli hash (leggendo qui http://technet.microsoft.com/en-us/library/cc786941%28v=ws.10%29.aspx) potresti usare una policy di registro e da linea di comando in powershell modificare le registry policy usando il comando Set-GPRegistryValue


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE! Ricorda di dare un occhio anche QUI

    lunedì 8 luglio 2013 13:45
    Moderatore
  • Per il calcolo corretto dell'hash  parti utilizzando la gui poi eporta la gpo in xml avrai il tuo hash

    <FileHashRule Action="Deny" UserOrGroupSid="S-1-1-0" Description="" Name="memor.cmd" Id="f5dbd3f8-b02e-4b0d-b175-39f466e8447a">
    <Conditions>
    <FileHashCondition>
    <FileHash Type="SHA256" SourceFileLength="380" SourceFileName="memor.cmd" Data="0x044C6D9755F2F69A8975DC1471AB6189AC03329F412E76E51ABCE249DBE92E75"/>
    </FileHashCondition>
    </Conditions>
    </FileHashRule>


    Data="0x044C6D9755F2F69A8975DC1471AB6189AC03329F412E76E51ABCE249DBE92E75"/>

    Questo è uno script pe la generazione

    #http://blogs.metcorpconsulting.com/tech/?tag=file-hash
    Param ( [string]$HashType="SHA256", [string]$TemplateFilePath="C:\Users\gastone.canali\Desktop\memor.cmd", [string]$FilePath="C:\Users\gastone.canali\Desktop\memor.cmd" ) Switch ($HashType) { ## OPEN Switch HashType "SHA1" { $HashMethod = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider } "SHA256" { $HashMethod = New-Object System.Security.Cryptography.SHA256CryptoServiceProvider } "MD5" { $HashMethod = New-Object System.Security.Cryptography.MD5CryptoServiceProvider } Default { $HashMethod = New-Object System.Security.Cryptography.MD5CryptoServiceProvider } } ## CLOSE Switch HashType cls Write-output "Perform File Hash using $HashType `r " IF ($TemplateFileHash) { clear-variable TemplateFileHash } $File = [System.IO.FileInfo]$TemplateFilePath $Stream = $null $HashAlgorithm = new-object $HashMethod $Stream = $File.OpenRead() $HashByteArray = $HashAlgorithm.ComputeHash($stream) $Stream.Close() ForEach ($Byte in $HashByteArray) { $TemplateFileHash += $Byte.ToString("X2") } Write-output "Template File Hash set to $TemplateFileHash `r " Write-output "Perform File Hash using $HashType `r " IF ($FileHash) { Clear-Variable FileHash } $File = [System.IO.FileInfo]$file $Stream = $null $HashAlgorithm = new-object $HashMethod $Stream = $File.OpenRead() $HashByteArray = $HashAlgorithm.ComputeHash($stream) $Stream.Close() ForEach ($Byte in $HashByteArray) { $FileHash += $Byte.ToString("X2") } IF ( $FileHash -ne $TemplateFileHash) { ## OPEN IF FileHash NotEqual to TemplateFileHash Write-output "The existing file hash ($FileHash) is NOT the same as the Template File Hash ($TemplateFileHash). `r " $FileHashComparison = $False } ## CLOSE IF FileHash NotEqual to TemplateFileHash ELSE { ## OPEN ELSE FileHash = TemplateFileHash $FileHashComparison = $True Write-output "The existing file hash ($FileHash) is the SAME as the Template File Hash ($TemplateFileHash). `r " } ## CLOSE ELSE FileHash = TemplateFileHash

    Questo è l'output

    Perform File Hash using SHA256  
    Template File Hash set to 044C6D9755F2F69A8975DC1471AB6189AC03329F412E76E51ABCE249DBE92E75  
    Perform File Hash using SHA256  
    The existing file hash (044C6D9755F2F69A8975DC1471AB6189AC03329F412E76E51ABCE249DBE92E75) is the SAME as the Template Fi
    le Hash (044C6D9755F2F69A8975DC1471AB6189AC03329F412E76E51ABCE249DBE92E75). 


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere



    sabato 13 luglio 2013 15:39
    Moderatore

Tutte le risposte

  • La vedo dura, più che di uno script ci vorrebbe un programma, sempre attivo, che verifichi l'hash di ogni programma eseguito "killandolo" se non autorizzato, meglio ancora sarebbe verifica prima dell'esecuzione...

    ciao


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE! Ricorda di dare un occhio anche QUI

    domenica 7 luglio 2013 22:19
    Moderatore
  • Ho parlato di script... l'idea è utilizzare sempre gpedit.msc di Windows ma configurandolo da riga di comando invece che dalla GUI. Quindi mi confermi che ciò non è possibile.....

    Grazie

    lunedì 8 luglio 2013 10:13
  • Perché dovresti aver bisogno di configurare la Group policy da linea di comando piuttosto che tramite console?


    lunedì 8 luglio 2013 11:10
    Moderatore
  • Adesso ho capito...

    Purtroppo da linea di comando non conosco un modo per modificare le policy di gruppo legate alle restrizioni software (con secedit.exe puoi operare su quelle locali), ma se riesci a capire  quali chiavi di registro vengono modificate e dove sono salvati gli hash (leggendo qui http://technet.microsoft.com/en-us/library/cc786941%28v=ws.10%29.aspx) potresti usare una policy di registro e da linea di comando in powershell modificare le registry policy usando il comando Set-GPRegistryValue


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE! Ricorda di dare un occhio anche QUI

    lunedì 8 luglio 2013 13:45
    Moderatore
  • esattamente... volevo utilizzare il comando secedit.exe.  La difficoltà è capire dove vengono salvati gli hash dei software da inibire. Nel link che mi hai inviato le chiavi sembrerebbero HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer oppure  HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows. Se il meccanismo di windows per le restrizioni software (lato GPO Locali) si basa solamente su queste due chiavi di registro potrebbe essere sufficiente andarci a scrivere i valori di hash dei processi da inbire. Ora verifico, grazie per la risposta.
    martedì 9 luglio 2013 08:22
  • ...
    sembrerebbero HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer
    ...
    ...
    potrebbe essere sufficiente andarci a scrivere i valori di hash dei processi da inbire.

    Una volta individuate le posizioni e i valori da scrivere nel registro, modificherai tali valori da linea di comando usando il comando Set-GPRegistryValue.

    La cosa difficile è capire dove e cosa scrivere nel registro...

    La cosa migliore è documentarsi bene ecco un po' di link interessanti:

    http://technet.microsoft.com/en-us/library/bb457006.aspx
    http://technet.microsoft.com/it-it/magazine/2008.06.srp.aspx

    http://www.autoitscript.com/forum/topic/106889-simple-software-restriction-policy/
    http://www.arcomit.co.uk/support/kb.aspx?kbid=000039
    http://community.spiceworks.com/attachments/post/0013/3264/Ultrasurf_SRP_Hash.txt

    ::Enable logging:
    reg.exe add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers" /v LogFileName /d saferlog.txt
    
    ::Disable logging:
    reg.exe delete "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers" /v LogFileName /f
    



    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE! Ricorda di dare un occhio anche QUI

    martedì 9 luglio 2013 10:01
    Moderatore
  • Esiste un modo per calcolare i valori delle chiavi ItemSize e LastModified riferite al processo applicativo? Senza il valore di queste due chiavi, il calcolo  degli hash md5 e sha256 non sembrano sufficienti  per abilitare la restrizione software....
    sabato 13 luglio 2013 14:37
  • Per il calcolo corretto dell'hash  parti utilizzando la gui poi eporta la gpo in xml avrai il tuo hash

    <FileHashRule Action="Deny" UserOrGroupSid="S-1-1-0" Description="" Name="memor.cmd" Id="f5dbd3f8-b02e-4b0d-b175-39f466e8447a">
    <Conditions>
    <FileHashCondition>
    <FileHash Type="SHA256" SourceFileLength="380" SourceFileName="memor.cmd" Data="0x044C6D9755F2F69A8975DC1471AB6189AC03329F412E76E51ABCE249DBE92E75"/>
    </FileHashCondition>
    </Conditions>
    </FileHashRule>


    Data="0x044C6D9755F2F69A8975DC1471AB6189AC03329F412E76E51ABCE249DBE92E75"/>

    Questo è uno script pe la generazione

    #http://blogs.metcorpconsulting.com/tech/?tag=file-hash
    Param ( [string]$HashType="SHA256", [string]$TemplateFilePath="C:\Users\gastone.canali\Desktop\memor.cmd", [string]$FilePath="C:\Users\gastone.canali\Desktop\memor.cmd" ) Switch ($HashType) { ## OPEN Switch HashType "SHA1" { $HashMethod = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider } "SHA256" { $HashMethod = New-Object System.Security.Cryptography.SHA256CryptoServiceProvider } "MD5" { $HashMethod = New-Object System.Security.Cryptography.MD5CryptoServiceProvider } Default { $HashMethod = New-Object System.Security.Cryptography.MD5CryptoServiceProvider } } ## CLOSE Switch HashType cls Write-output "Perform File Hash using $HashType `r " IF ($TemplateFileHash) { clear-variable TemplateFileHash } $File = [System.IO.FileInfo]$TemplateFilePath $Stream = $null $HashAlgorithm = new-object $HashMethod $Stream = $File.OpenRead() $HashByteArray = $HashAlgorithm.ComputeHash($stream) $Stream.Close() ForEach ($Byte in $HashByteArray) { $TemplateFileHash += $Byte.ToString("X2") } Write-output "Template File Hash set to $TemplateFileHash `r " Write-output "Perform File Hash using $HashType `r " IF ($FileHash) { Clear-Variable FileHash } $File = [System.IO.FileInfo]$file $Stream = $null $HashAlgorithm = new-object $HashMethod $Stream = $File.OpenRead() $HashByteArray = $HashAlgorithm.ComputeHash($stream) $Stream.Close() ForEach ($Byte in $HashByteArray) { $FileHash += $Byte.ToString("X2") } IF ( $FileHash -ne $TemplateFileHash) { ## OPEN IF FileHash NotEqual to TemplateFileHash Write-output "The existing file hash ($FileHash) is NOT the same as the Template File Hash ($TemplateFileHash). `r " $FileHashComparison = $False } ## CLOSE IF FileHash NotEqual to TemplateFileHash ELSE { ## OPEN ELSE FileHash = TemplateFileHash $FileHashComparison = $True Write-output "The existing file hash ($FileHash) is the SAME as the Template File Hash ($TemplateFileHash). `r " } ## CLOSE ELSE FileHash = TemplateFileHash

    Questo è l'output

    Perform File Hash using SHA256  
    Template File Hash set to 044C6D9755F2F69A8975DC1471AB6189AC03329F412E76E51ABCE249DBE92E75  
    Perform File Hash using SHA256  
    The existing file hash (044C6D9755F2F69A8975DC1471AB6189AC03329F412E76E51ABCE249DBE92E75) is the SAME as the Template Fi
    le Hash (044C6D9755F2F69A8975DC1471AB6189AC03329F412E76E51ABCE249DBE92E75). 


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere



    sabato 13 luglio 2013 15:39
    Moderatore
  • Ti ringrazio per la risposta accurata. Gli hash li ho già calcolati con alcuni tool, volevo sapere come calcolare invece i valori esadecimali relativi alle chiavi ItemSize (dimensione del file hashato) e LastModified (data time dell'ultima modifica).
    sabato 13 luglio 2013 18:57
  • Capisco i tuoi dubbi, dettati dalle info, penso, non corrette di Microsoft

    00 00 0A 01 00 00 00 00=000010A00
    e non
    00 0A 01 00 00 00 00 00 che sarebbe 000001A0 come riportato

     
    ItemSize (REG_QWORD). This is the actual file size of the target file. To evaluate this value, reverse the bytes. For example, if the value data was: 00 0A 01 00 00 00 00 00, the file size would actually be 010a00 or 68,096 bytes.

    LastModified (REG_QWORD). This is the date and time down to seconds of when this entry was last updated. Several utilities exits to extract this name into a readable format however just as the ItemSize data was reversed so should this value.

    Per aggiunere carne sul fuoco

    The AppLocker policy is stored under the HKLM\Software\Policies\Microsoft\Windows\SrpV2 key. The policy is stored in an XML format and is translated by the Application Identity (AppID) service.
    http://technet.microsoft.com/it-it/magazine/2009.05.win7.aspx

    Ciao


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere

    domenica 14 luglio 2013 14:50
    Moderatore