본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

▣ Dropper 

- 다른 악성코드를 받아 실행시켜줌 (fopen등을 사용)

- 자체가 악성코드는 아님.

- 다운로더 라고도 불림.

- 자기 자신 프로그램을 삭제하는 코드도 사용. (흔적을 남기지 않기위해)


▣ Steganography (스테가노그래피)

- '스테가노그래피(steganography)'는 전달하려는 기밀 정보를 이미지 파일이나 MP3 파일 등에 암호화해 숨기는 심층암호 기술.
- 예를 들어 모나리자 이미지 파일이나 미국 국가 MP3 파일에 비행기 좌석 배치도나 운행 시간표 등의 정보를 암호화해 전달할 수 있다.

[출처 : http://terms.naver.com/entry.nhn?docId=69867&cid=43667&categoryId=43667]

- 쉽게 말해 전혀 다른 데이터 파일에 내가 숨기고싶은 데이터를 넣고 숨겨버림.


▣ 실습

- 1바이트 마다 마지막 비트에 1비트의 정보를 담음


- 주의 사항은 55바이트 부터 읽어와야 함.

- 54 바이트 까지는 파일의 헤더여서 정보를 담고 있는 쓸데없는 정보이기에 버려줌.

#include <stdio.h>
#include <stdlib.h>

int main()
{
	FILE * fin = fopen("data-Hidden.bmp", "rb");
	FILE * fout = fopen("solve.exe", "wb");

	int buffer=0;
	int cnt = 0;
	char temp;


	if(!fin)
	{
		printf("There's no such file!\n");
		exit(1);
	}

	fseek(fin, 54, SEEK_SET);

	while(fread(&temp, 1, 1, fin) > 0)
	{
		if(cnt == 8)
		{
			cnt = 0;
			fprintf(fout, "%c", buffer);
			buffer = 0;
		}

		buffer += ((temp&1) << (7 - cnt));
		cnt++;

	}

	fclose(fin);
	fclose(fout);
	return 0;
}

- buffer는 1바이트에 해당하는 새로운 정보를 저장하기 위해 만들어둔 장소.

- cnt는 8비트 마다 끊어서 저장하기 위해 마련해둔 카운터.

- 20줄에서 fseek 함수를 통해 파일의 읽는 위치를 헤더정보를 넘어선 55 바이트부터 읽게끔 설정.

- 31줄에서는 비트 연산자를 통해 마지막 비트를 알아내 앞으로 차곡차곡 밀어주는 과정.


- 해당 코드를 실행하면 data-Hidden.bmp 파일로 부터 solve.exe라는 실행파일이 생성됨.

- 문제의 답 code가 생성됨을 볼 수 있음.







i2sec 대구지점 23기 수료생.

'해킹&보안 > C언어' 카테고리의 다른 글

[D+20] 포인터 (2)  (0) 2017.03.08
[D+19] 포인터 (1)  (0) 2017.03.07
[D+17] 함수  (0) 2017.03.02
[D+16] 파일 입출력 (2)  (0) 2017.03.01
[D+15] 파일 입출력 (1)  (0) 2017.02.27