Pagina 1 din 1

[TIP] Protectie antivirus pentru Stick/PC

Scris: Vin Mai 17, 2013 8:08 am
de Catalin B.
E o moda din ce in ce mai larg raspandita, virusarea prin Stick-uri USB.

Am anexat un mic utilitar pentru activare sau dezactivare Read Only la stick-uri, (cand duci un document la imprimat, sigur centrele de copiere sunt pline de virusi, e bine de protejat la scriere inainte de asta).

Cu Write Protect activat, nu se mai pot scrie fisiere pe Stick ( pentru a trimite fisiere pe Stick, trebuie dezactivat mai intai Write Protect).

Utilitarul poate fi pus si pe stick : daca ai de luat un fisier de la cineva, e mai bine sa introduci stick-ul tau protejat in PC-ul respectiv; daca nu apare automat mesajul ca discul este read-only inainte de a trimite documente pe stick, semn ca virusul incearca sa scrie pe disc fisiere nedorite, atunci poti debloca protectia chiar de pe utilitarul de pe stick (e posibil sa dea o eroare, dar stick-ul se deblocheaza totusi ).

Daca a aparut mesajul fara sa trimiti un fisier pe stick, mai bine renunta la document, nu debloca stick-ul, risti sa duci virusul mai departe, pe calculatorul tau sau al altora.

Pentru un anumit virus, in arhiva gasesti si o metoda de recuperare fisiere si devirusare manuala.


Alte optiuni care trebuie luate in seama pentru USB disk Manager sunt:
-Execute Deny: daca se activeaza aceasta optiune, se va interzice astfel rularea pe calculatorul tau a oricarui software de pe USB Stick.
-In settings: Disable Windows Autorun for USB Sticks - aceasta optiune este extrem de utila pentru a opri infectarea calculatorului: un virus aflat pe un stick USB are nevoie de aceasta functiune Windows pentru a -si "face treaba" pe calculatorul tau (fisierele autorun.inf ascunse pe Stick vor "da drumul" virusului in PC). Dezactivand aceasta functie, Stick-ul USB sau unitatea externa de memorie nu se va mai deschide automat la introducerea in portul USB. (Singura "neplacere" este ca va trebui sa intri pe unitatea externa din My Computer :) , nu se va mai deschide automat)

Sunt de parere ca unitatile de memorie portabile (stick-uri, chiar si HD externe) sunt si vor fi o tinta usoara si din ce in ce mai agresiva pentru "scriitorii" de virusi; tot ce putem face e sa mediatizam astfel de metode de protejare, accesibile indiferent de nivelul de cunostinte IT.

Daca sunt erori in fisierele anexate, puteti face modificarile care se impun, sau completari, apoi sa le postati din nou.

Nu stiu la ce versiuni de sistem de operare functioneaza utilitarul; pot incepe eu lista : functioneaza pentru Vista. Pentru XP SP3, nu functioneaza Dezactivarea functiunii Autorun din sistemul de operare, la XP e mai dificil de facut asta.

Re: [TIP] Protectie antivirus pentru Stick/PC

Scris: Sâm Mai 25, 2013 11:05 am
de Catalin B.
Problema principala la USB disk Manager este ca protejeaza doar calculatorul tau impotriva Stick-urilor introduse, Stick-ul personal este in continuare vulnerabil la introducerea in alte calculatoare virusate.
O metoda destul de larg raspandita de protejare a stick-ului personal, este umplerea spatiului liber prin crearea unui fisier creat "artificial", pe disk nu mai ramane spatiul necesar "infiltrarii " fisierelor virusate. Daca la introducerea stick-ului in acel PC apare fara sa dai nici o comanda mesajul "Disk is full", e clar ca se incearca virusarea stick-ului.
Am adunat si scris un set de macrocomenzi pentru crearea si stergerea fisierelor false pe stick-uri, valabil pentru versiuni incepand de la XP.
Codul este usor de modificat pentru cine prefera early binding:

Cod: Selectaţi tot

Option Explicit
Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type
Private Declare Function GetVersionEx Lib "kernel32" _
      Alias "GetVersionExA" (lpVersionInformation As _
      OSVERSIONINFO) As Long
Public Cale As String
Sub WriteProtect()
CreateObject("WScript.Shell").RegWrite _
"HKLM\System\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect", 1, "REG_DWORD"
End Sub
Sub WriteUnprotect()
CreateObject("WScript.Shell").RegWrite _
"HKLM\System\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect", 0, "REG_DWORD"
End Sub
Sub SpatiuLiber()
Dim FSO As Object 'New Scripting.FileSystemObject 'pentru early binding'
Dim Partitie 'As Drive
Dim Spatiu As Double
Dim TipDrive As Integer, Text As String
Dim TextComanda As String
Dim FileSistem As String
Dim NrFile, VersiuneSO As Long
Dim i As Integer
Dim Split2GB As Double
Split2GB = Application.Sum(1073741824, 1073741824) '1000000000 '
Set FSO = CreateObject("Scripting.FileSystemObject")

' calea se poate seta in modulul ThisWorkbook, _
si e valabila pentru ambele proceduri, de creare si stergere fisier
'doar in cazul in care
If Cale = "" Then Cale = Left(ThisWorkbook.Path, 2)
    If Cale = "\\" Then
       MsgBox "Adresa este din retea, nu este din My computer...", vbInformation, "Mai bine renunta... :)"
       Exit Sub
    End If
Set Partitie = FSO.GetDrive(Cale)
Spatiu = Partitie.FreeSpace
TipDrive = Partitie.DriveType
If TipDrive <> 1 Then
 Select Case TipDrive
      Case 0: Text = "Necunoscut"
      Case 1: Text = "Removable"
      Case 2: Text = "Fix"
      Case 3: Text = "Din Retea"
      Case 4: Text = "CD-ROM"
      Case 5: Text = "RAM Disk"
   End Select
              If MsgBox("Este un Disk de tip " & Text & "," & _
                    vbNewLine & "esti sigur ca aici vrei sa creezi fisierul fals?", _
                    vbYesNo, "Confirma creare fisier pe " & Partitie) = vbYes Then
                   Else
                      Exit Sub
               End If
End If

If Spatiu = 0 Then
MsgBox "Nu exista spatiu liber pe " & Cale & " !", , "Verificare spatiu liber"
Exit Sub
End If

FileSistem = Partitie.FileSystem
VersiuneSO = Val(Get_OS_Version)

TextComanda = "fsutil file createnew " & Partitie & "\FisierFals " & Spatiu
    If FileSistem = "NTFS" Then
       If VersiuneSO < 6 Then
          CommandLine TextComanda
         Else
          TextComanda = Application.InputBox("Copiaza acest text in Command Prompt:" _
       & vbNewLine & "(Deschis cu drepturi de administrator!)", "Creare fisier fals", TextComanda)
      Exit Sub
       End If
    End If
 'marime maxima fisiere: FAT12: 32 MB; FAT16: 2 GB; FAT32: 4 GB
   'sper ca nu se mai foloseste FAT12 :)
   'am stabilit marimea maxima fisier la 2 GB pt. compatibilitate cu FAT16 si FAT32
If FileSistem <> "NTFS" Then
         If Split2GB > Application.Sum(1073741824, 1073741824) Then
            MsgBox "Marimea maxima a fisierelor este de 2 GB!", , "Fisier prea mare"
                  Exit Sub
         End If
If Spatiu > Split2GB Then 'daca spatiul liber e > 2 GB trebuie facute mai multe fisiere
  
   NrFile = WorksheetFunction.Ceiling(Spatiu / Split2GB, 1)
   
          If NrFile > 10 Then
              If MsgBox("Se vor crea " & NrFile & " Fisiere pe " & Partitie & _
                    vbNewLine & "Apasa ''Yes'' daca e OK, sau ''No'' daca vrei sa schimbi " _
                    & vbNewLine & "marimea fisierelor pentru a reduce acest numar!", _
                    vbYesNo, "Confirma creare fisiere pe " & Partitie) = vbYes Then
                   Else
                      Exit Sub
               End If
         End If
      If Len(Range("A1")) > 0 Then
           Range(Range("A1"), Range("A1").End(xlDown)).Select
           Selection.ClearContents
      End If
For i = 1 To NrFile
     If i = NrFile Then
          If VersiuneSO < 6 Then
            TextComanda = "fsutil file createnew " & Partitie & "\" & i & _
                          "FisierFals " & Spatiu - (NrFile - 1) * Split2GB
              CommandLine TextComanda
              Else
             ActiveSheet.Cells(i, 1) = "fsutil file createnew " & Partitie & "\" & i & _
                                       "FisierFals " & Spatiu - (NrFile - 1) * Split2GB
           End If
        Exit For
      End If
   
   
    If VersiuneSO < 6 Then
          TextComanda = "fsutil file createnew " & Partitie & "\" & i & _
                        "FisierFals " & Split2GB
          CommandLine TextComanda
        Else
          ActiveSheet.Cells(i, 1) = "fsutil file createnew " & Partitie & "\" & i & _
                                    "FisierFals " & Split2GB
    End If
Next
Else
     If VersiuneSO < 6 Then
          CommandLine TextComanda
         Else
         TextComanda = Application.InputBox("Copiaza acest text in Command Prompt:" _
        & vbNewLine & "(Deschis cu drepturi de administrator!)", "Creare fisier fals", TextComanda)
      End If
End If
End If
End Sub
Sub StergeFisierFals()
Dim FSO As Object 'New Scripting.FileSystemObject 'pentru early binding
Dim Fisier As Object
Set FSO = CreateObject("Scripting.FileSystemObject") ' nu e necesar in early binding
If Cale = "" Then Cale = Left(ThisWorkbook.Path, 2)
       For Each Fisier In FSO.GetFolder(Left(ThisWorkbook.Path, 2)).Files
          If InStr(1, Fisier.Name, "FisierFals", vbTextCompare) > 0 Then Kill Fisier
       Next
End Sub
Function Get_OS_Version()
'Versiuni Windows:
'6.2 Windows 8
'6.2 Windows Server 2012
'6.1 Windows 7
'6.1 Windows Server 2008 R2
'6.0 Windows Server 2008
'6.0 Windows Vista
'5.2 Windows Server 2003 R2
'5.2 Windows Server 2003
'5.2 Windows XP 64-Bit Edition
'5.1 Windows XP
'5.0 Windows 2000

Dim oOSInfo As OSVERSIONINFO
oOSInfo.dwOSVersionInfoSize = Len(oOSInfo)
GetVersionEx oOSInfo
     Get_OS_Version = oOSInfo.dwMajorVersion & "." & oOSInfo.dwMinorVersion
End Function
Public Function CommandLine(command As String, Optional ByVal keepAlive As _
    Boolean = False, Optional windowState As VbAppWinStyle = VbAppWinStyle.vbHide) _
    As Boolean
     '--------------------------------------------------------------------------------
     ' Procedure : CommandLine
     ' Author    : Aaron Bush (Oorang)
     ' Date      : 10/02/2007
     ' Purpose   : Provides a simple interface to execute a command lines from VBA.
     ' Input(s)  :
     '               command     : The DOS command you wish to execute.
     '               keepAlive   : Keeps the DOS window open *after* command has been
     '                             executed. Default behavior is to auto-close. (See
     '                             remarks section for additional information.)
     '               windowState : Determines the window state of the DOS prompt
     '                             *during* command execution.
     ' Output    : True if completed with no errors, False if error encountered.
     ' Remarks   : If the windowState property is set to vbHide while the keepAlive
     '             parameter is set to True, then windowState will be changed to
     '             vbNormalFocus.
     '--------------------------------------------------------------------------------
    On Error GoTo Err_Hnd
    Const lngMatch_c As Long = 0
    Const strCMD_c As String = "cmd.exe"
    Const strComSpec_c As String = "COMSPEC"
    Const strTerminate_c As String = " /c "
    Const strKeepAlive_c As String = " /k "
    Dim strCmdPath As String
    Dim strCmdSwtch As String
    If keepAlive Then
        If windowState = vbHide Then
            windowState = vbNormalFocus
        End If
        strCmdSwtch = strKeepAlive_c
    Else
        strCmdSwtch = strTerminate_c
    End If
    strCmdPath = VBA.Environ$(strComSpec_c)
    If VBA.StrComp(VBA.Right$(strCmdPath, 7), strCMD_c, vbTextCompare) <> _
    lngMatch_c Then
        strCmdSwtch = vbNullString
    End If
    VBA.Shell strCmdPath & strCmdSwtch & command, windowState
    CommandLine = True
    Exit Function
Err_Hnd:
    CommandLine = False
End Function
Public Sub getDriveSpace()
    Dim FSO As Object 'New FileSystemObject - early binding
    Dim d As Object 'Drive - early binding
    Dim strText As String
    Set FSO = CreateObject("Scripting.FileSystemObject") 'nu e necesar in early binding
    For Each d In FSO.Drives
        strText = "Drive " & d.DriveLetter & ": Spatiu liber: "
        If d.IsReady Then
            strText = strText & Round(d.FreeSpace / 1073741824, 2) & " Gb"
        Else
            strText = strText & "Drive not ready"
        End If
        MsgBox strText
        'Debug.Print strText
    Next
    
End Sub
In modulul thisWorkbook, se poate seta partitia:

Cod: Selectaţi tot

Option Explicit
Private Sub Workbook_Open()
Cale = Left(ThisWorkbook.Path, 2) ' se poate inlocui cu text de forma "H:" , _
                        - unde H este  litera atribuita stick-ului in My Computer, _
                          daca acest fisier nu se ruleaza de pe Stick
    'Macrocomanda poate fi rulata si de pe PC, _
    dar mai bine de pe Stick, chiar si din subfoldere!
    
End Sub
Am primit recent o oferta de la Bitdefender, am observat ca se lucreaza acolo din greu la diverse utilitare: USB immunizer (gratuit) , AntiTheft (nu e gratuit).
Din pagina de detalii, reiese ca:
"The USB Immunizer replaces any autorun file on the drive with a special one that can’t be deleted or modified by malware anymore. If you plan to to use your own autorun.inf file, then we’d recommend that you don’t immunize the drive, as you’ll lose your original file. Unfortunately, this is the only available approach to mitigate the effect of autorun malware."
Fisierul autorun.inf propriu il am deja pe stick, dar virusii trec de el fara prea mari probleme...
Am testat si USB immunizer-ul, ce mi-a placut este ca nu a putut face imunizarea, deoarece pe stick era prezent fisierul fals creat cu procedurile de mai sus:
Immunizer.jpg
In procedurile de mai sus se regaseste si protejarea/deprotejarea la scriere pe USB a calculatorului, prin scrierea unei chei de registru - WriteProtect , in StorageDevicePolicies. Eu le-am testat si functioneaza si in XP si in Vista.

Re: [TIP] Protectie antivirus pentru Stick/PC

Scris: Sâm Mai 25, 2013 12:01 pm
de Catalin B.
Un dezavantaj pentru versiunile incepand de la Vista, este ca acele linii de comanda create prin procedurile mentionate, trebuie executate intr-un command prompt deschis manual cu drepturi de administrator. nu stiu cum se pot rula complet automat comenzile, din ce am studiat pe net, fsutil nu se poate rula automat.
Pentru stick-urile cu capacitate de 32 Gb, cum folosesc eu, daca nu il formatam ca NTFS, ar fi trebuit sa rulez pana la 16 linii de comanda (sau 8, daca faceam fisiere de 4 GB).
Stie cineva o alta solutie? Eventual poate facem noi un executabil ...