Windows는 Telnet 이나 터미널서비스가 동작중이지 않은 이상 공격대상 PC의 관리자 ID/Password를 안다고 해도 악성코드가 원격에서 명령을 실행시킬 방법이 마땅치 않습니다. 대상 PC에 Telnet 이 동작중일 가능성은 거의 없고, 혹시 터미널서비스가 동작중이더라도 프로그램적으로 이용하기는 약간 거시기하죠. 공유폴더를 통해 악성코드를 공격대상 PC에 복사할 수 있다고 하더라도 실행시킬 방법이 없으면 소용 없는 일입니다.
Windows에서 원격PC의 단순암호계정 취약점을 이용해 명령을 실행시킬 수 있는 방법이 있는데... 바로 "Task Scheduler Service"입니다. 우리말로는 "예약된 작업"이죠. 디폴트로 동작되는 이 서비스를 이용해서, 대상 PC의 계정/암호만 안다면 이 작업 예약이란 걸 (엉뚱하게도) 원격에서 할 수 있습니다. (자세한 내용은 커맨드 창에서 "at" 명령어 도움말을 참조하세요.)
그래서 이 원격 예약작업은 PC주인보다 악성코드에 의해 애용되는 대표적인 서비스입니다. 반대로 이 원격 예약작업 등록 패킷을 차단할 수 있다면 악성코드 확산을 차단하는데도 효과가 있겠죠.
원격 작업 예약을 요청하는 패킷은 특정한 타입의 SMB 패킷입니다.
445/TCP Port를 이용하는 SMB 패킷에 대해 SMB 헤더를 분석합니다.
SMB Header 는 다음과 같이 생겼습니다.
상기 구조체 중 Command 항목이 "NT Create AndX (0xa2)" 인 경우 바로 뒤에 따라오는 SMB Command 확장 Command 구조체는 다음과 같이 생긴 놈이 됩니다.
이 중 두번째 구조체인 SMB_Data에 들어있는 WCHAR String의 내용이 "\atsvc"이면 이것이 원격작업 등록을 요청하는 패킷입니다. (실제 등록하고자 하는 작업의 내용은 별도의 패킷을 전송됩니다.)
Windows에서 원격PC의 단순암호계정 취약점을 이용해 명령을 실행시킬 수 있는 방법이 있는데... 바로 "Task Scheduler Service"입니다. 우리말로는 "예약된 작업"이죠. 디폴트로 동작되는 이 서비스를 이용해서, 대상 PC의 계정/암호만 안다면 이 작업 예약이란 걸 (엉뚱하게도) 원격에서 할 수 있습니다. (자세한 내용은 커맨드 창에서 "at" 명령어 도움말을 참조하세요.)
그래서 이 원격 예약작업은 PC주인보다 악성코드에 의해 애용되는 대표적인 서비스입니다. 반대로 이 원격 예약작업 등록 패킷을 차단할 수 있다면 악성코드 확산을 차단하는데도 효과가 있겠죠.
원격 작업 예약을 요청하는 패킷은 특정한 타입의 SMB 패킷입니다.
445/TCP Port를 이용하는 SMB 패킷에 대해 SMB 헤더를 분석합니다.
SMB Header 는 다음과 같이 생겼습니다.
SMB_Header { UCHAR Protocol[4]; UCHAR Command; SMB_ERROR Status; UCHAR Flags; USHORT Flags2; USHORT PIDHigh; UCHAR SecurityFeatures[8]; USHORT Reserved; USHORT TID; USHORT PIDLow; USHORT UID; USHORT MID; }
상기 구조체 중 Command 항목이 "NT Create AndX (0xa2)" 인 경우 바로 뒤에 따라오는 SMB Command 확장 Command 구조체는 다음과 같이 생긴 놈이 됩니다.
SMB_Parameters
{
UCHAR WordCount;
Words
{
UCHAR AndXCommand;
UCHAR AndXReserved;
USHORT AndXOffset;
UCHAR Reserved;
USHORT NameLength;
ULONG Flags;
ULONG RootDirectoryFID;
ULONG DesiredAccess;
LARGE_INTEGER AllocationSize;
SMB_EXT_FILE_ATTR ExtFileAttributes;
ULONG ShareAccess;
ULONG CreateDisposition;
ULONG CreateOptions;
ULONG ImpersonationLevel;
UCHAR SecurityFlags;
}
}
SMB_Data
{
USHORT ByteCount;
Bytes
{
SMB_STRING FileName;
}
}
이 중 두번째 구조체인 SMB_Data에 들어있는 WCHAR String의 내용이 "\atsvc"이면 이것이 원격작업 등록을 요청하는 패킷입니다. (실제 등록하고자 하는 작업의 내용은 별도의 패킷을 전송됩니다.)
'Kernel Inside > NDIS' 카테고리의 다른 글
역시 교과서가 최고입니다. ㅋㅋㅋ (1) | 2011.06.28 |
---|---|
NET_BUFFER_LIST 구조에 대한 설명 (0) | 2011.06.20 |
"신뢰할 수 있는 게시자" CertStore에 인증서 추가하기 (2) | 2011.04.22 |
Install Device Driver With DIFx (Driver Install Frameworks) (0) | 2011.04.21 |
NDIS_PACKET Discussion (0) | 2011.04.02 |