작업 관리자를 메모리 순으로 정렬해 놓고 내려가다 보면 ASDSvc.exe 라는 이름이 나온다. 회사 이름도 설명도 없이 대문자 세 글자로 시작하는 이 프로세스는, 깐 기억이 없는 사람에게는 꽤 수상해 보인다. 끝내기를 눌러도 몇 초 뒤면 다시 목록에 올라와 있으니 더 그렇다.
내 PC 에도 이 프로세스가 돌고 있었다. 언제 깔렸는지부터 거꾸로 따라가 보니, 설치 날짜가 위즈베라의 Delfino G3, Veraport 와 같은 날이었다. 그날 인터넷 뱅킹에 들어가면서 설치 안내 화면이 시키는 대로 이것저것 받았던 날이다. 이 연재는 그렇게 PC 에 쌓인 금융·공공 사이트용 보안 프로그램을 하나씩 열어 보는 기록이고, 첫 번째가 asdsvc.exe 다.
이름표부터 확인했다
수상한 프로세스를 볼 때 제일 먼저 보는 것은 파일이 어디 있고 누가 서명했는지다. 그런데 일반 권한의 PowerShell 에서 Get-CimInstance Win32_Process 로 ASDSvc.exe 의 실행 경로를 물었더니 빈 값이 돌아왔다. 프로세스 시작 시각과 CPU 사용 시간도 마찬가지로 읽히지 않았다. 보호된 프로세스라서 관리자 권한이 없으면 안을 들여다볼 수 없게 막아 둔 것이다.
경로는 서비스 쪽에서 찾을 수 있었다.
Get-CimInstance Win32_Service |
Where-Object { $_.PathName -like '*ASDSvc*' } |
Select-Object Name, DisplayName, StartMode, StartName, PathName
Name : SafeTransactionSVC
DisplayName : AhnLab Safe Transaction Service
StartMode : Auto
StartName : LocalSystem
PathName : "C:\Program Files\AhnLab\Safe Transaction\ASDSvc.exe"
서비스 이름은 SafeTransactionSVC, 표시 이름은 AhnLab Safe Transaction Service 다. 파일 속성과 디지털 서명을 확인한 결과는 이렇다.
| 항목 | 값 |
|---|---|
| 파일 | C:\Program Files\AhnLab\Safe Transaction\ASDSvc.exe (약 4.5MB) |
| 파일 설명 | ASDF Service Application |
| 제품 | ASD Framework 2.5 (파일 버전 2.5.0.281) |
| 회사 · 서명 | AhnLab, Inc. · 서명 유효 |
| 설치 프로그램 이름 | AhnLab Safe Transaction 1.18.1.1997 |
| 서비스 | 자동 시작, LocalSystem 계정 |
ASD 는 이 제품의 엔진 이름(ASD Framework)에서 온 것으로 보인다. 정리하면 asdsvc.exe 는 안랩이 만든 금융 거래 보안 프로그램 AhnLab Safe Transaction 의 본체 서비스다. 은행이나 증권사, 카드사 사이트가 접속할 때 설치를 요구하는 바로 그 프로그램이다. 이 경로에 있고 안랩 서명이 유효하다면 악성코드가 이름만 흉내 낸 것은 아니다. 반대로 같은 이름의 파일이 다른 폴더에 있거나 서명이 없다면 그때는 의심해야 한다.
메모리는 9MB 일까 72MB 일까
검색어에 "asdsvc exe 메모리"가 따로 있을 만큼, 메모리 사용량이 신경 쓰이는 사람이 많다. 내 PC 에서 같은 순간에 두 숫자를 읽어 보았다.
Get-Process ASDSvc | Select-Object `
@{n='WorkingSet_MB'; e={[math]::Round($_.WorkingSet64/1MB,1)}}, `
@{n='Private_MB'; e={[math]::Round($_.PrivateMemorySize64/1MB,1)}}
작업 집합(Working Set)은 9.5MB, 개인 메모리(Private Bytes)는 72MB 였다. 작업 관리자의 기본 "메모리" 열은 지금 실제 메모리에 올라와 있는 부분을 보여 주기 때문에 9MB 근처로 작게 보인다. 개인 메모리는 이 프로세스가 자기 몫으로 확보해 둔 전체 크기라서 훨씬 크다. 나머지는 당장 쓰지 않아 디스크 쪽으로 밀려나 있거나 아직 건드리지 않은 영역이다.
그러니 "asdsvc.exe 가 메모리를 많이 먹는다"는 말은 어떤 숫자를 보느냐에 따라 맞기도 하고 틀리기도 하다. 평소 상태라면 실제로 차지하는 메모리는 크지 않다. 은행 사이트에 접속해 보호 기능이 켜지는 동안에는 이 숫자가 올라간다.
꺼도 다시 살아나는 이유
작업 관리자에서 끝내기를 눌러도 다시 뜨는 이유는 서비스 복구 설정에 있다.
> sc.exe qfailure SafeTransactionSVC
RESET_PERIOD (in seconds) : INFINITE
FAILURE_ACTIONS : RESTART -- Delay = 5000 milliseconds.
RESTART -- Delay = 5000 milliseconds.
RESTART -- Delay = 5000 milliseconds.
서비스가 비정상으로 끝나면 5초 뒤에 다시 시작하도록, 그것도 세 번까지 걸어 두었다. 강제로 끝낸 것도 Windows 입장에서는 비정상 종료라서 5초 뒤에 그대로 살아난다. 보안 프로그램이 악성코드 하나에 쉽게 꺼지면 안 되니 일부러 이렇게 만든 것이다.
서비스 하나만 있는 것도 아니다. 같은 폴더에는 커널 드라이버가 여럿 들어 있었고, 드라이버 목록에서 이름 끝에 _SafeTransaction 이 붙은 것이 아홉 개 나왔다. 그중 프로세스를 감시하는 드라이버(AntiStealth), 파일·레지스트리를 감시하는 드라이버, 자기 자신이 변조되지 않게 지키는 Tamper Protection 드라이버 세 개가 실행 중이었다. 방화벽(TNFwNt), 네트워크 침입 차단(TNNipsNt), 행위 탐지(MeDCoreD·MeDVpDrv) 드라이버는 멈춰 있었다. 모두 수동 시작이라 평소에는 일부만 올라와 있고, 보호가 필요한 사이트에 들어갈 때 나머지가 필요에 따라 올라오는 구조로 보인다. 시작 프로그램에는 트레이 아이콘을 띄우는 stsess.exe /tray 가 따로 등록되어 있었다.
지워도 되는가
결론부터 말하면, 인터넷 뱅킹을 거의 쓰지 않는다면 지워도 PC 동작에는 문제가 없다. Windows 구성 요소가 아니라 사이트가 요구해서 따로 설치한 프로그램이기 때문이다. 다만 다음에 그 은행 사이트에 들어가면 설치 안내가 다시 나오고, 이 프로그램이 없으면 로그인이나 이체 단계로 넘어가지 못한다.
지울 때는 서비스를 직접 멈추거나 폴더를 지우지 말고 설치 프로그램의 제거 기능을 쓴다. 설정 → 앱 → 설치된 앱에서 "AhnLab Safe Transaction" 을 찾아 제거하면 된다. 레지스트리에 등록된 제거 명령은 V3Medic.exe -Uninstall 이었다. 드라이버와 서비스를 같이 걷어 내야 하므로 제거 뒤에는 재부팅을 하는 편이 깔끔하다.
지울지 말지를 정할 때 참고할 숫자가 하나 더 있다. 설치 폴더 전체 크기가 1.28GB 였다. 대부분은 업데이트용 파일을 보관하는 MUpdate2 폴더다. 프로그램 본체는 수십 MB 수준인데 업데이트를 받을 때마다 받은 파일이 쌓인다. 디스크가 빠듯한 노트북이라면 한 번 지웠다가 필요할 때 다시 받는 쪽이 낫다.
내 PC 에서는 이 서비스 말고도 같은 날 깔린 프로그램이 여럿 있었다. 다음 편부터는 그 프로그램들을 차례로 열어 본다. 그 전에 Windows 자체 프로세스인데도 같은 질문을 많이 받는 Runtime Broker 부터 짚고 간다.