본문 바로가기

.NET Framework/BUNDLE

[.NET] 코드 보안(창과 방패) - 02. 난독화(Obfuscation)

 회차
[.NET] Code Securit(Spear and Shield) : 01. DisAssembler
[.NET] Code Securit(Spear and Shield) : 02. Obfuscation

[.NET] Code Securit(Spear and Shield) : 03. Dotfuscator Program Comparison #1
[.NET] Code Securit(Spear and Shield) : 04. Dotfuscator Program Comparison #2
[.NET] Code Securit(Spear and Shield) : 05. Obfuscation Design Tip And Notabilia
[.NET] Code Securit(Spear and Shield) : 06. Security Tools : Strong Name Tool

02| 코드 보안(창과 방패) - 난독화(Obfuscation)
구독자 여러분 안녕하세요

이번 포스팅에서 다뤄볼 내용은 난독화 입니다. 난독화가 무엇인지 모르시는분들을 위해 다시한번 소개와 난독화 도구가 무엇이 있는지 알아보도록 하겠습니다. 필요하지 않으시다면 넘어가셔도 좋습니다.


난독화?! 읽어도 멍때리는건가? 뭐지?
난독화 기술란 해커들은 보통 리버스 엔지니어링(소프트웨어 설계도를 역으로 추적) 기술을 사용해 정보를 훔칠수 있는데, 난독 기술은 파일에 보호막을 씌워 리버스 엔지니어링을 적용하지 못하게 만드는 기술을 뜻한다.

또한 난독화는 소스코드/바이너리 난독화로 나눕니다.
소스코드 난독화 : C++, 자바, C#등의 프로그램의 소스코드를 알아보기 힘든 형태로 바꾸는 기술
바이너리 난독화 : 컴파일 후에 생성된 바이너를 역공학을 통해 분석하기 힘들게 변조 기술

지난 포스팅을 통해 MSIL 역어셈블러이나 리플렉션을 통해 코드를 너무 쉽게 노출되는 것을 보게 되었습니다.
어떻게 하면 노출을 막을수 있나요? 난독화 라는 의미처럼 코드를 완벽하게 보안을 할수 있는것은 아닙니다.
즉, 코드를 암호화는 것은 아니며 코드를 읽기 어렵게 변조합니다.

리버스 엔지니어에게 코드를 어렵게 보여줌으로써 .NET으로 구현된 대부분의 상용 컴포넌트와 어플리케이션들의 정보를 노출에 최소화 할 수 있습니다.

그렇다면 난독화 도구는 뭐가 있을까요? 
가장 많이 사용되고 있는 난독화 도구로써는 다음과 같습니다.

* 난독화 도구(가장 많이 사용되는 난독화 도구)
- Dotfuscator( http://www.preemptive.com/products/dotfuscator/ )
  Visual Studio에 Add-in 가능 / Visual Studio 번들 제공(ver Community Edition)
- Spices.Net Decompiler(
http://www.9rays.net/Category/54-spicesnet-decompiler.aspx ) / 9rays.net사 / $399+
- Spices.Net Obfuscator(
http://www.9rays.net/Category/55-spicesnet-obfuscator.aspx ) / 9rays.net사

* 그외 난독화 도구
- Aspose.Obfuscator ( http://www.aspose.com/corporate/purchase/policies/discontinued-products.aspx )
  Aspose사 / 무료 / 지원 없음
- Assemblur (
http://www.metapropeller.com/ ) / Metapropeller사 / 무료
- AssemblyLockbox ( 
http://alb.gibwo.com/dnn/ )  / Gibwo사 / 매달 49.95$
- Babel ( 
http://code.google.com/p/babelobfuscator/ ) / Alberto Ferrazzoli사 / 무료
- BitHelmet Obfuscator (
http://www.bithelmet.com/ ) / BitHelmet사 / $245
- C# Source Code Obfuscator (
http://www.semdesigns.com/Products/Obfuscators/CSharpObfuscator.html )
   Semantic Designs사 / $200
- CliSecure (
http://www.secureteam.net/ ) / SecureTeam / 업무 제휴 필요
- CodeArmor .NET ( 
http://www.vilabs.com/products/codearmor-protection/ ) / v.i. labs사 / 업무 제휴 필요
- CodeVeil ( 
http://xheo.com/products/code-protection ) / Xheo사 / $899
- CodeWall (
http://www.codewall.com/ ) / CodeWall Technologies사 / $390
- Decompiler.NET / Jungle Creatures사 / $550
- Deploy.NET  / Jungle Creatures사 / $750
- DeepSea Obfuscator ( 
http://www.deepseaobfuscator.com/ ) / TallApplications BV사 / $299
- Demeanor for .NET ( 
http://howtoselectguides.com/dotnet/obfuscators/ ) / Wise Owl사 / $799
- DNGuard HVM (
http://www.dnguard.net/ )  / ZiYuXuan Studio사 / $899
- dotNet Protector ( 
http://dotnetprotector.pvlog.com/Home.aspx ) / pvlog사 / €300 이상
- Eazfuscator.NET (
http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx
  Oleksiy Gapotchenko사 / 무료
- Goliath .NET Obfuscator ( 
http://www.cantelmosoftware.com/eng/obfuscator.html )
   Cantelmo Software사 / 무료
- Google Obfuscar (
http://code.google.com/p/obfuscar/ ) / Google사 / 무료
- LSW IL-Obfuscator ( 
http://www.lesser-software.com/en/content/products/LSW%20DotNet-Tools/LSW_DotNet_IL-Obfuscator.htm ) / Lesser-Software사 / $29
- NetOrbiter (
http://www.zolohouse.com/wow/NetOrbiter/index.html  ) / WowPanda사 / 무료
- .NET Reactor (
http://www.eziriz.com/products.htm ) / Eziriz사 /  $179
- Obfuscator.NET ( 
http://www.macrobject.com/en/obfuscator/ ) / Macrobject사 / $199
- PC Guard for .NET ( 
http://www.sofpro.com/pcgw32.htm ) /  SofPro사 / €399
- Phoenix Protector ( 
http://ntcore.com/phoenix.php ) / NTCore사 / 무료
- Postbuild .NET Obfuscator ( 
http://www.xenocode.com/ ) / Xenocode사 / $1599
- QND-Obfuscator  (
http://www.desaware.com/products/books/net/obfuscating/index.aspx
   Desaware사 / $39.95
- Salamander .NET Obfuscator (
http://www.remotesoft.com/salamander/obfuscator.html ) / Remotesoft사 / $799
- Salamander .NET Protector (
http://www.remotesoft.com/salamander/protector.html ) / Remotesoft사 / $1,899
- SharpObfuscator (
http://sharpobfuscator.codeplex.com/ ) / CodePlex사 / 무료
- Skater .NET Obfuscator (
http://www.smrtx.com/RS/obfuscator_net.htm ) / Rustemsoft사 / $99이상
- {smartassembly} (
http://www.red-gate.com/products/smartassembly/index.htm ) / Cachupa사 / $399 이상
- Thinstall / vmware / $4,995이상

Tip > Java에도 JAD와 같은 대표적 역컴파일러가 있듯이 PreEmptive 사에서도 Dotfuscator의 자바버전인 DashO 제품이 있으니 참고 바랍니다.

Visaul Studio 설치 때 유심히 보신분이라면 아실것 같은데요. Dotfuscator 난독화 도구(Dotfuscator Community Edition)는 크리스탈 리포트(VS2008 이하) 처럼 번들로 제공됩니다.

비록, 완제품이 아니지만 Renaming 만으로도 난독화에 많은 영향을 미칠수 있기 때문에 무시 할수 없죠 : )
이번 포스팅은 난독화에 대한 간략 소개와 난독화 도구 리스트에 대해서 소개를 해보았습니다.

다음 포스팅에는  Dotfuscator Community Edition과  Dotfuscator Profession Edition이 어떤 기능의 차이가 있는지 비교를 해볼까 합니다. ^^  앞서 궁금하시다면 아래 참고 문헌을 참고 하시길 바랍니다. : )

참고 문헌
- Dotfuscator 4.0 : http://msdn.microsoft.com/ko-kr/library/ms227240.aspx

포스팅을 마치며...

더 궁금하신점이 있으시면 댓글 혹은 http://blog.tobegin.net/notice/1 프로필정보를 통해 문의 바랍니다.
감사합니다.

정은성 드림