본문 바로가기

My Study/Programming&Theory

알약 프로세스 죽이기

보통 바이러스가 제대로 활개치기 위해서는 백신이라는 놈이 없어져야만 제대로 돌아다닐 수 있습니다.
그래서 몇몇 바이러스들을 보면 백신을 죽이는 코드가 있습니다. 뭐 간단하게 TerminateProcess함수를 호출해서 죽이는 방법이 있습니다. 그래서 만들어본 알약 프로세스 죽이는 코드입니다.

간단하게 AYAgent.aye라는 프로세스를 찾으면 죽이는 코드입니다.
하지만 위와같이 코드를 짜게되면 알약 프로세스는 죽지 않을 것입니다.
왜냐하면 알약 자체적으로 특권권한을 높혀놨기 때문에 제 프로세스보다 특권이 높아서 OpenProcess할 때 핸들을 얻어오지 못하기 때문입니다. 저번에 csrss.exe를 사용한 안티디버깅 탐지기법에서도 설명 드렸듯이 특권 권한이 낮으면 핸들 값을 얻질 못합니다.
그래서 어떻게 죽일까 생각해본 결과 DLL Injection을 사용해 죽이는 방법보다 제 프로세스의 특권 권한을 높혀보기로 했습니다. 특권 권한을 높힌 제 프로그램 코드 입니다.

권한 상승 함수를 하나 더 넣어 주었습니다.

이제 이 프로그램을 가지고 알약을 죽여보도록 하겠습니다.
영상으로 보시겠습니다. ( Ctrl + 마우스 휠로 크기 조절 하셔서 보시면 됩니다. )


이처럼 권한 상승만 시켜줬을 뿐인데 백신을 죽일 수가 있었습니다.
만약에 바이러스 코드에 이와같은 루틴만 넣어주게 되면.. 바로 백신이 죽으니 걱정입니다.
전 OS업뎃과 백신에 의존해서 버티고 있기 때문이죠. 다른 백신은 테스트를 안해봐서 모르겠습니다.

어떤 백신 같은 경우는 생성되는 모든 프로세스에 DLL Injection을 해서 해당 프로세스에서 자기 프로세스를 죽이는 함수가 실행되면 해당 함수를 후킹해서 우회시켜버리는 방법을 사용하고 있었습니다.

쫌 허무하군요.

실험한 날짜는 2010년 5월 7일 입니다. 위 코드로 알약 종료가 안된다면.. 알약이 바뀐 것이겠지요.