요즘 발견되는 악성코드 중에는 특정 프로그램의 실행을 방지하는 것들이 많습니다.
( 모르는 상태에서 감염되어보면 심히... 당황스럽습니다..ㅋ )

악성코드를 진단/치료하는 안티-바이러스 프로그램들부터 시작해서...

악성코드 분석에 도움이 될만한 각종 툴들(디버거, 디스어셈블러, 모니터링 툴 등...)이 그 대상인데요.

프로그램의 실행을 방지하는 방법 중 비교적 간단한(?) 방법에 대한 소개를 해볼까 합니다.


바로 '레지스트리'를 이용한 방법인데요.

HKEY_LOCAL_MACHINE
    \SOFTWARE
        \Microsoft
            \WindowsNT
                \CurrentVersion
                    \Image File Execution Option

IFEO 레지스트리를 이용하면 됩니다.

해당 레지스트리는 하위에 키값으로 지정된 파일들이 실행될 때의 몇몇 옵션을 임의로 적용을 할 수 있는데요.

보통은 실행파일을 디버거로 연결하거나, 다른 실행파일로 리다이렉션 시킬 때 많이 사용합니다.

레지스트리에 원하는 실행파일의 이름으로 새로운 키를 만들고, Debugger 라는 값을 만들어서,

디버거의 경로를 지정하면 그 실행파일이 실행될 때는 자동으로 지정한 경로의 디버거로 연결이 되는데,

악성코드에서는 이런 특성을 악용하고 있습니다.

악성코드가 IFEO 레지스트리를 조작한 화면


만약, Debugger 값으로 지정한 경로가 잘못된 경로라면 어떻게 될까요...?

해당 파일을 찾을 수 없다며 프로그램 실행이 되지 않습니다.

저 레지스트리의 하위키로 각종 안티-바이러스 프로그램의 실행파일과 기타 툴들의 파일이름을 추가한 다음,

Debugger 값을 살짝 바꿔버리면... 그 모든 파일들은 실행이 되지 않는거죠;;

아마도, 이 방법이 비교적 구현하기 쉬우면서도 파급효과가 꽤 큰(?) 방법이라서 자주 이용되는게 아닌가 싶네요;ㅋ


여기서 간단한 꼼수를 밝히자면...

어차피 실행파일의 이름으로 막은 것이기 때문에, 실행파일의 이름을 다르게 바꿔주면 실행이 가능합니다.
( 물론 몇몇 파일들의 경우, 파일이름을 바꿨을 때 정상적으로 실행이 되지않는 경우도 있을 수 있습니다. )

그리고 레지스트리에 추가된 파일이름을 직접 지워줘도 실행이 가능하구요.
( 원래 등록되어있던 파일들도 있기 때문에, 지울때는 조심해서 지우셔야 합니다. )
.
.

혹시라도 기존에 실행이 잘 되던 파일이 갑자기 파일이 없다면서 실행이 안된다...

그런데.. 실제로 파일은 있다;;; 그러면 요런 경우를 의심해보시기 바랍니다. ㅋ


ps...
좀 잘 만들어진 악성코드들은 레지스트리 변조유무를 체크하기 때문에 심히 피곤해질 수 있습니다.
그런 경우는 샘플을 보안업체 보내고 느긋이(?) 기다리는 것을 추천합니다.
( 그 전에 할 수 있는 걸 해보는 것도 나쁘지는 않겠죠..ㅋ )