지난 주부터 이번 주까지 바이러스 분야의 이슈 중의 하나가  델파이 라이브러리를 감염시켰던...

Win32.induc.a 가 아닐까 싶네요.

네이버의 "바이러스 제로 시즌 2" 카페에 이 바이러스에 대한 분석 정보(보러가기)를 올리면서...

블로그에도 정리해서 올리겠다고 했는데, 하루 하루 미루다가 오늘에서야 올리게 되는군요 ^^;



[ 특징 ]

1. 델파이로 개발된 바이러스이며, 델파이 4 ~ 7 버전이 설치된 PC 에 한해서만 바이러스 감염 코드가 실행됩니다.
   ( 델파이가 없는 PC 에서는 이 바이러스에 감염된 파일을 실행하더라도, 바이러스 감염 코드가 실행되지 않습니다. )

2. 실행 파일을 직접적으로 감염시키지는 않으며, 악성코드라고 하기엔 민망할 정도로 위협적인 코드는 없습니다.
   ( 개인적인 생각으로는 새로운 감염 방식을 위한 테스트 버전이 아닐까 싶기도... )


[ 감염 여부 확인 ]

( 델파이가 설치되어 있는 PC 의 경우... )
델파이가 설치된 폴더의 \lib 폴더에 sysconst.bak 파일과 sysconst.dcu 파일이 같이 존재하고,

[ 그림 01 ] 바이러스에 감염된 sysconst.dcu


sysconst.dcu 파일 내부에 위의 [ 그림 01 ]과 같은 문자열(델파이 코드)이 있다면,

이 바이러스에 감염이 된 것입니다.

또, 이 바이러스에 감염된 실행 파일은 공통적으로 다음과 같은 문자열(델파이 코드)을 갖고 있습니다.

[ 그림 02 ] 바이러스에 감염된 실행 파일



[ 감염 원리 ]

이 바이러스는 실행 파일(EXE, DLL 등...)을 직접적으로 감염시키지는 않으며,

델파이 라이브러리인 SysConst 를 감염시킨 후, 델파이에서 실행 파일을 컴파일 할 때,

감염된 SysConst 라이브러리가 포함되는 방식입니다.

  1. 레지스트리 HKLM\Software\Borland\Delphi\X.0\RootDir 를 참조해 델파이 루트 경로를 구합니다. (X = 4~7)
  2. 1. 에서 구한 경로를 기준으로 source\rtl\sys\SysConst.pas 파일을 lib\sysconst.pas 파일로 복사하면서 소스 파일 중간에 바이러스 코드를 집어넣습니다.
  3. \lib 폴더에 있던 기존의 SysConst.dcu 파일을 SysConst.bak 파일로 백업합니다.
  4. dcc32.exe 를 이용하여 바이러스 코드가 심어진 \lib 폴더의 sysconst.pas 파일을 컴파일합니다.
  5. 4. 의 과정이 끝나면 \lib 폴더에 새로운 sysconst.dcu 파일(감염된 라이브러리)이 생성됩니다.
  6. 새로운 sysconst.dcu 파일이 생성되면 감염된 소스코드 \lib 폴더의 sysconst.pas 파일을 삭제합니다.

이렇게 라이브러리의 감염 과정이 끝나면,

이후에 델파이에서 컴파일되는 실행 파일 중, SysConst 라이브러리를 사용하는 파일들에는

모두 바이러스 코드가 심어진 sysconst.dcu 파일이 적용되면서...

실행 파일에 바이러스 코드가 추가되는 방식입니다.


[ 복구 방법 ]

델파이 라이브러리를 복구하기 위해서는 \lib 폴더의 sysconst.dcu 파일을 제거 후,

SysConst.bak 파일을 SysConst.dcu 파일로 이름을 변경해주면 됩니다.

이 방법이 조금 찜찜하신 분들은 깔끔하게 델파이를 제거 후, 새로 설치하셔도 됩니다. :)


감염된 실행 파일의 경우는, 해당 바이러스 코드 영역(4080 바이트)을 "00" 으로  덮어쓴 후,

라이브러리 감염 루틴을 호출하는 CALL 명령을 NOP(0x90) 으로 무력화하면 됩니다.

대부분의 안티 바이러스 제품에서도 이 방법으로 치료를 하고 있으며,

대부분의 경우 정상적으로 실행이 됩니다.

치료가 가능하긴 하지만, 그보다 감염되지 않은 깨끗한 파일을 다시 구하는 것을 권장합니다.


[ 마치며... ]

이 바이러스의 경우 직접적인 실행 파일 감염도 없고, 위해 요소가 없었기에 다행이지만...

"악성" 적인 코드가 이런 방식을 취했을 경우를 생각하면 아찔합니다..;;
( 하긴 그만큼 빨리 발견되긴 하겠지만요..ㅋ )

조금 아쉬운 점은 안티 바이러스 제품이 이 바이러스를 진단하는 시점이 너무 늦었던게 아닌가... 하는 건데요.
( 물론, 특정 환경하에서만 동작하는 코드에, 실질적인 위험 요소는 없는 코드라는 게 애매하긴 하죠... )

덕분에 공식 홈페이지에서 다운로드 받은 파일이 바이러스가 감염된 상태라거나...

잘 사용하던 파일이 갑자기 바이러스로 진단되는 등... 혼란이 일었다는 점이 조금 씁쓸하긴 합니다.

그리고, 델파이라는 개발툴 자체에 부정적인 이미지가 심어지는 건 아닌가 싶기도 하구요.

알게 모르게 많이 퍼졌던 탓에 아직도 기승을 부리는 것 같은데...

얼른 정리가 되었으면 좋겠네요..