VS 2010] About Visual Studio 2010 Editions MS] Visual Studio

Visual Studio 2010 Service Pack 1 이 지난달에 RTM 이 나왔습니다.
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

Visual Studio 2010 은 2008 과 다른 Edition 을 제공하기 때문에 (SKU 가 다릅니다.), 기존의 사용자들에게 혼란 스러운 점이 있을 것입니다. 큰 정책의 변화는 Standard Edition 이 사라지고, Professional Edition 으로 모든 개발을 할 수 있게 되었다는 것이지요. 
Visual Studio 2008 은 Edition 별로 개발의 제한이 있었지요. (Professional Edition 부터 VSTO 및 Windows Mobile 관련 지원을 해왔습니다.)
 
어떻게 보면 Simple 해 진듯 합니다만... 간단히, 100명 이상의 큰 프로젝트가 아닌 이상 Professional Edition 을 구매하시면 됩니다.  물론 Tester, Architector 에게는 상위의 Edition 이 필요합니다. 앞서 블로깅한 내용처럼 Ultimate Edition 에 포함되어 있는 Intellitrace 기능은 개발자에게는 매력적인 기능이 아닐 수 없습니다. (TTT - Time Travel Tracing 가 이제 필요 없어지는군요.)
T-Shooting 하는 입장에서는 Visual Studio 가 이제 Memory Dump 생성을 할 수 있다는 것이 재밌네요.
 
Visual Studio 2010 에 대해서 아래와 같이 정리해 보았습니다. 

Visual Studio 2010 가 제공하는 IDE 환경을 통해서 손쉽게 다양한 Application 을 개발 할 수 있습니다.Visual Studio 2010 Product 은 다음과 같이 4 개의 Product SKU(Stock Keeping Unit) 으로 구성되어 있습니다.

  1. Visual Studio Express Edition
    • Visual Basic 2010 Express Edition
    • Visual C# 2010 Express Edition
    • Visual C++ 2008 Express Edition
    • Visual Web Developer 2010 Express Edition
    • Visual Studio 2010 Express for Windows Phone CTP
  2. Visual Studio Professional Edition
  3. Visual Studio Premium Edition
  4. Visual Studio Ultimate Edition
1. Visual Studio 2010 Express Edition
  • Express Edition 은 비전문가, 학생, 애호가 및 초보자를 위해 편리하며 배우기 쉽고 간단한 도구를 제공합니다.
  • Web 을 통해 무료로 다운로드 받으실 수 있으며, 간단한 Application 을 개발하실 수 있는 기능들을 제공합니다.
  • Download Visual Studio 2010 Express Edition
2. Visual Studio 2010 Professional Edition
  • Professional Edition 은 비전문(초급) 개발자를 포함한 전문 개발자 및 소규모 Project 에 적합한 통합 개발 환경을 제공합니다.
  • Windows, Web, Office 관련 개발 환경 및 Cloud 와 Sharepoint 개발 환경을 제공합니다. 추가적으로 Silverlight 와 Multi-core 개발 또한 지원합니다.
    • Windows Development
    • Web Development
    • Office Development
    • Silverlight Tools
    • SharePoint Development
    • Cloud Development
    • Multi-core Development
    • New WPF Editor
    • Generate from Usage
    • Customizable IDE
3. Visual Studio 2010 Premium Edition
  • Premium Edition 은 전문 개발자 및 중소 규모 Project 에 적합한 통합 개발 환경을 제공합니다.
  • 오프라인 데이터베이스, 단위 테스팅, 변경 관리, 정적 코드 분석을 포함함으로써 성능 프로파일링 및 코드 커버리지 와 코드 메트릭스를 통해 높은 퀄리티의 어플리케이션을 개발할 수 있습니다.
  • 다양한 테스트 툴 및 배포 관련 툴이 포함되어 있습니다.
    • Database Deployment
    • Database Change Mgmt
    • Database Unit Testing
    • Performance Profiling
    • Test Impact Analysis
    • Static Code Analysis
    • Code Metrics
    • Code Coverage
    • UI Test Automation
    • Test Data Generation
4. Visual Studio 2010 Ultimate Edition
  • Ultimate Edition 은 전문 개발자 및 대 규모 Project 에 적합한 통합 개발 환경을 제공합니다.
  • 설계부터 배포에 이르기까지 높은 퀄리티의 산출물을 개발할 수 있는 ALM(Application Lifecycle Management) 종합 개발 환경입니다.
  • 무엇보다 IntelliTrace 기능을 포함함으로써 Application 이 내포하는 다양한 버그를 Time Traverse 기능을 통해 디버깅을 할 수 있습니다.
  • Microsoft Test Manager 2010 이 포함되어 있어 QA 전반에 필요한 테스트를 할 수 있습니다.
  • UML Diagram(Activity, Use Case, Sequence, Component, Class Diagram) 을 포함한 Architect 에 필요한 Modeling Tool 을 제공합니다.
    • IntelliTrace
    • Architecture Explorer
    • Logical Class Designer
    • UML Modeling
    • Layer Diagram
    • Web Testing
    • Load Testing
    • Microsoft Test Manager 2010 (Test Case Management, Manual Testing, Fast Forward for Manual Testing)
5. Edition 별 차이점 (Detail)
http://www.microsoft.com/visualstudio/ko-kr/products 를 참조하여 주시기 바랍니다.

6. Server 제품 군 및 그 외 제품들
Server Products
  • Visual Studio Team Foundation server 2010
    • ALM(Application Lifecycle Management) 를 완벽하게 지원하는 TFS 2010 은 버전 관리, 테스트 케이스 관리 데이터베이스, 워크 아이템 추적, 변경 일정 관리, 빌드 자동화, 종합적인 레포트를 제공합니다.
    • 새로운 Agile Planning Tool 을 통해, 개발의 요구조건에 맞는 템플릿을 생성할 수 있습니다.
  • Visual Studio Lab Management 2010
    • Lab Management 2010 은 가상 랩 환경을 제공합니다.
기타
  • Visual Studio Test Professional 2010
    • Test Manager 2010 (Test Case Management, Manual Testing, Fast Forward for Manual Testing, Lab Mgmt Config)
    • Team Explorer
    • Team Agent
7. MSDN Subscription 별 차이점

Software for Production Use

Visual Studio 2010 Ultimate with MSDN

Visual Studio 2010 Premium with MSDN

Visual Studio 2010 Professional

with MSDN

Visual Studio Test Professional 2010
with MSDN

Visual Studio® Team Foundation Server 2010 and one (1) Client Access License (New!)

Microsoft® E-pression Studio 3 (New!)

Microsoft® Office 2007 Ultimate, Communicator 2007, Project 2007 Standard, Visio 2007 Professional, SharePoint Designer 2007

Software for Development and Test Use

Visual Studio 2010 Ultimate with MSDN

Visual Studio 2010 Premium with MSDN

Visual Studio 2010 Professional
with MSDN

Visual Studio Test Professional 2010
with MSDN

Windows® Azure™ (New!)

Windows (client and server)

Microsoft® SQL Server®

Toolkits, Software Development Kits, Driver Development Kits

Microsoft® Office

Microsoft Dynamics®

All other servers

Windows Embedded operating systems (New!)

Microsoft® E-Learning course collections (New!)

2

2

1

1

Technical support incidents

4

4

2

2

Priority support in MSDN Forums (New!)

MSDN Flash newsletter

MSDN Magazine

Online Concierge

 


DBG] Trojan Malware AV issue (DLL Injection) MS] Windows

최근에 Malware Issue 있어서 Posting 봅니다.

 

증상은 다음과 같습니다.

1.       특정 머신에서( 1% 정도) 해당 증상이 재현됩니다.

2.       실행과 동시에 종료됩니다. (TaskMgr 확인 , 실행과 동시에 사라집니다.)

3.       다른 계정으로 실행 실행됩니다.

 

Crash Dump 수집해 보니, 아래와 같이 AV 발생했습니다.

0:000> .lastevent

Last event: e38.dc: Access violation - code c0000005 (first/second chance not available)

debugger time: Wed Mar 23 11:34:23.702 2011 (UTC + 9:00)

 

0:000> r

eax=42ba0e10 ebx=000000ae ecx=7c93f641 edx=cc55ff40 esi=00c31116 edi=00004840

eip=00c3595e esp=0011bbac ebp=0012f474 iopl=0         nv up ei pl nz na po nc

cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010202

fcv+0x595e:

00c3595e 8c6fd1          mov     word ptr [edi-2Fh],gs ds:0023:00004811=????????

 

0:000> u 00c3595e - 0x20 00c3595e +0x20

fcv+0x593e:

00c3593e ab              stos    dword ptr es:[edi]

00c3593f ebe4            jmp     fcv+0x5925 (00c35925)

00c35941 5a              pop     edx

00c35942 ffd2            call    edx

00c35944 59              pop     ecx

00c35945 e30b            jecxz   fcv+0x5952 (00c35952)

00c35947 61              popad

00c35948 83c410          add     esp,10h

00c3594b 5d              pop     ebp

00c3594c 6a01            push    1

00c3594e 58              pop     eax

00c3594f c20c00          ret     0Ch

00c35952 ff5320          call    dword ptr [ebx+20h]

00c35955 40              inc     eax

00c35956 ff55cc          call    dword ptr [ebp-34h]

00c35959 1560abf641      adc     eax,41F6AB60h

00c3595e 8c6fd1          mov     word ptr [edi-2Fh],gs   << AV 발생한 부분

00c35961 6d              ins     dword ptr es:[edi],dx

00c35962 b8034e99e4      mov     eax,0E4994E03h

00c35967 fd              std

00c35968 89c5            mov     ebp,eax

00c3596a 105ba6          adc     byte ptr [ebx-5Ah],bl

00c3596d f1              ???

00c3596e 3cec            cmp     al,0ECh

00c35970 b76f            mov     bh,6Fh

00c35972 06              push    es

00c35973 d6              ???

00c35974 92              xchg    eax,edx

00c35975 7aa6            jp      fcv+0x591d (00c3591d)

00c35977 f1              ???

00c35978 4e              dec     esi

00c35979 19ac0b56a1ec70  sbb     dword ptr [ebx+ecx+70ECA156h],ebp

fcv 어떤 Module 인지 확인하여 보면 다음과 같습니다. (tmp 확장자를 가지는 module 이네요. Malware 라는 생각이 들지요?)

 

0:000> lm vm fcv

start    end        module name

00c30000 00c3d000   fcv      C (export symbols)       fcv.tmp

    Loaded symbol image file: fcv.tmp

    Image path: C:\Documents and Settings\MyUser\Local Settings\Temp\fcv.tmp

    Image name: fcv.tmp

    Timestamp:        Sat Jun 20 07:22:17 1992 (2A425E19)

    CheckSum:         00000000

    ImageSize:        0000D000

    File version:     0.0.0.0

    Product version:  0.0.0.0

    File flags:       0 (Mask 0)

    File OS:          0 Unknown Base

    File type:        0.0 Unknown

    File date:        00000000.00000000

    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4

 

이제 확인해야 내용은 아래 Call Stack 모두 있습니다.

0:000> kbL

ChildEBP RetAddr  Args to Child             

WARNING: Stack unwind information not available. Following frames may be wrong.

0012f474 7c93118a 00c30000 00000000 00000000 fcv+0x595e

0012f494 7c94e024 00c36218 00c30000 00000000 ntdll!LdrpCallInitRoutine+0x14

0012f58c 7c80ac87 00c30000 76b10160 7c80ff12 ntdll!LdrUnloadDll+0x41c

0012f5a0 76af6082 00c30000 00000009 0012f990 kernel32!FreeLibrary+0x3f

0012f5c0 76af2e87 0012f990 00c30000 0012f5f0 winmm!InternalLoadDriver+0x17e

0012f6f4 76af2e4c 0012f990 00000000 00000000 winmm!InternalOpenDriver+0x32

0012f70c 76af3886 0012f990 00000000 00000000 winmm!DrvOpen+0x15

0012f980 76af419d 0012f990 76b109bc 0069006d winmm!mmDrvOpen+0x46

0012f9a0 76af4121 00000001 00000000 76af2b61 winmm!MidiInit+0x30

0012f9b0 76af403e 00000001 0012fa04 76af2b61 winmm!InitDevices+0xb8

0012f9e4 76af2b94 76af0000 0012fa10 7c93118a winmm!DllProcessAttach+0xe4

0012f9f0 7c93118a 76af0000 00000001 0012fd30 winmm!_DllInstanceInit+0xb3

0012fa10 7c94c4da 76af2b61 76af0000 00000001 ntdll!LdrpCallInitRoutine+0x14

0012fb18 7c951194 0012fd30 7ffde000 7ffdf000 ntdll!LdrpRunInitializeRoutines+0x344

0012fc94 7c95108f 0012fd30 7c930000 0012fce0 ntdll!LdrpInitializeProcess+0x1131

0012fd1c 7c93e437 0012fd30 7c930000 00000000 ntdll!_LdrpInitialize+0x183

00000000 00000000 00000000 00000000 00000000 ntdll!KiUserApcDispatcher+0x7

 

우선, winmm!_DllInstanceInit 번째 Parameter HINTANCE 또는 HMODULE 이겠지요.

winmm.dll Virtual Address 값이 76af0000 것입니다.

 

76af0000 76b1b000   winmm      (private pdb symbols)

 

번째 Parameter DllMain() DWORD fdwReason 같습니다.

BOOL __stdcall DllMain(HINSTANCE hInstDll, DWORD fdwReason, PVOID fImpLoad) {}

번쯤 확인해 보는 것이 좋습니다. (Loader Lock Issue 때문에…)

 

#define DLL_PROCESS_ATTACH   1   

#define DLL_THREAD_ATTACH    2   

#define DLL_THREAD_DETACH    3   

#define DLL_PROCESS_DETACH   0   

 

Parameter 값이 1로서, DLL_PROCESS_ATTACH 호출되는 것을 있습니다.

이후에 Call Stack 보면 DLL_PROCESS_ATTACH 에서 특정 Driver  Open 한다라는 것을 있습니다.

 

해당 Driver 보면, midi9 것을 있습니다.

0:000> du 0x0012f990

0012f990  "midi9"

 

문제는 이후인데, kernel32!FreeLibrary() 명시적으로 DLL Unload 하는 것을 있습니다. 해당 Module 0x00c30000 으로 앞서 확인한 fcv.tmp 입니다.

Unload Module 접근하면, 당연히 AV 발생할 합니다.

 

이상과 같이 전체적인 흐름을 확인했습니다만

midi9 fcv.tmp 내용만으로도 Malware 라는 것을 있습니다.

 

그렇다면, 어떻게 fcv.tmp Load 되었는지를 확인해 봐야 합니다.

DLL Injection 방법 가장 흔한 Registry 사용한 DLL Injection 아닐 의심해 있습니다.

하지만, Call Stack Registry 통한 DLL Injection Call Stack 아닙니다.

 

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\ 하위의

 

LoadAppInit_DLLs (REG_DWORD) 1

AppInit_DLLs (REG_SZ) “ 

 

설정으로 DLL Injection 쉽게 있습니다.

이와 같이 Registry 통한 DLL Injection User32.dll 사용하는 Process 대해서만 Injection 수행됩니다.

 

해당 Dump Call Stack User32.dll 보이지 않습니다.

만일, Registry 사용한 DLL Injection 사용했다면, 아래와 같은 Call Stack 가질 것입니다.

0:000> kbL

ChildEBP RetAddr  Args to Child             

WARNING: Frame IP not in any known module. Following frames may be wrong.

0023eba0 76dfaf58 68690000 00000001 00000000 0x72a0254e

0023ebc0 76dffd6f 72a0254e 68690000 00000001 ntdll!zzz_AsmCodeRange_End

0023ecb4 76e0021b 00000000 6fa27c2a 76de6f2a ntdll!LdrpRunInitializeRoutines+0x26f

0023ee20 76dff629 0023ee80 0023ee4c 00000000 ntdll!LdrpLoadDll+0x4d1

0023ee54 74f7b8a4 004367cc 0023ee94 0023ee80 ntdll!LdrLoadDll+0x92

0023ee8c 769e1af0 00000000 00000000 00000001 KERNELBASE!LoadLibraryExW+0x15a

0023efc4 769c9f2a 00000044 7ffdf6cc 00000001 kernel32!BasepLoadAppInitDlls+0x167

0023efe4 7665f1be 00000000 00000000 00000001 kernel32!LoadAppInitDlls+0x82

0023f11c 7665f1da 76de627e 0023f138 00000000 USER32!ClientThreadSetup+0x1c4

0023f120 76de627e 0023f138 00000000 0023f7e0 USER32!__ClientThreadSetup+0x5

0023f134 7654ecff 7654ea61 0023f280 0023f6dc ntdll!KiUserCallbackDispatcher+0x2e

0023f138 7654ea61 0023f280 0023f6dc 7665f5a0 GDI32!NtGdiInit+0xc

0023f144 7665f5a0 76640000 00000001 0023f7ac GDI32!GdiDllInitialize+0x1c

0023f6dc 76dfaf58 76640000 00000001 0023f9c4 USER32!_UserClientDllInitialize+0x34b

0023f6fc 76dffd6f 7665f7c9 76640000 00000001 ntdll!zzz_AsmCodeRange_End

0023f7f0 76e090c6 0023f9c4 7ffdf000 7ffd5000 ntdll!LdrpRunInitializeRoutines+0x26f

0023f950 76e08fc8 0023f9c4 76da0000 6fa26baa ntdll!LdrpInitializeProcess+0x137e

0023f9a0 76dfb2f9 0023f9c4 76da0000 00000000 ntdll!_LdrpInitialize+0x78

0023f9b0 00000000 0023f9c4 76da0000 00000000 ntdll!LdrInitializeThunk+0x10

Registry 의한 DLL Injection 아니라면… WindowsHook, API Hooking 여러 가지 방법 등이 있겠습니다만가장 의심되는 것은 Trojan DLL Injection 아닐 의심해 봅니다.

 

아쉽게도, 어떻게 DLL Injection 했는지는 없었습니다. (Anti-Virus Tool 해결되었기 때문이지요. J )

 

이와 관련한 Malware 정보는 아래와 같습니다. (이렇게 전달해 드렸지만, 아마 정황상 아닐 싶습니다…)

http://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?Name=Trojan%3AWin32%2FDaonol.I

 

이상 2% 부족한 AV Dump 분석이었습니다. :’(


1 2 3 4 5 6 7 8 9 10 다음