오프라인 3일차 (네트워크 기반 위협)

2022. 7. 4. 17:38보안/케이쉴드

반응형

웹해킹이 인기있는 이유

공격자에게 노출되어 있기 때문에

 

네트워크 공격

디도스>> 이 성격을 가지고 있는 친구들이 많다.

arp 스푸핑

mitm

ping of death

land

flooding

smurf

브로드케스트 어텍

dhcp starvation 

budy

slowloris

......... 공격 기법이 많다

 

 

핵심

dos, scan

 

dos, ddos 차이?

dos - 서비스 거부 > 아무도 들어가지마

ddos - +분산형(d) > 여러 시스템에서 트레픽을 때려서 마비 (백신접속, 자격증신청) >> 막을수가 없다, 대기서버로 완화만 가능 차단 불가

 

네트워크 스캐닝 공격 

서비스의 작동여부와 서비스를 확인이 가능하다 (확인단계)

서비스, 포트, host 정보등을 알아냄

tcp기반이 대부분

ex) nmap

 

목적 

열려있는 포트 확인 > 제공하는 서비스 추축

취액점 파악

 

절차 

1. 활동범위 결정

어떤 정보를 얻을지 결정 > 공개 소스 검색을 통해 회득 가능한 정보

2. 네트위크 목록 수집

서비스를 제공하는 네트워크 - 웹, db서버

내부 네트워크 - 인트라넷

데상에 대하여 접근하는 경로가 무엇이 있는지 탐색하고 '목록화' 한다.

3. dns 질의

ip를 알아내기 위해 질의를 하기도 함

dns 쿼리를 통해

ex)

nslookup naver.com

dig  (조금 더 많이 사용한다)

whois 서비스

intodns.com

maltego - 오신트를 활용한 >> ghdb

4. 네트워크 정찰

보안을 위한 장비가 존재하는지 알아보는 단계

tracert , traceroute- 방화벽 여부 확인 가능 찾아가는 라우터 마다 응답을 받음 (나의 게이트웨이 ....> 목적지)

visualroute > traceroute보다 속도가 조금 더 빠름

 

페킷 - packet

출발지, 목적지

 

 

 

사용 프로토콜

icmp, tcp, udp

 

풋 프린팅 > 공격하기 전에 제공된 정보를 확인하는 과정 (목록화) > 들킬일이 없다.

 

사회공학적 기법 - 사기

 

 

 

 

네트워크스캐닝 종류

 

ping & icmp 스케닝

시스템이 정상 작동하는지 확인

ping은 7계층이다 (icmp 3계층이다) ㅋㄷㅋㄷ

 

오픈 스캔

tcp 3way handshake를 이용해 정상적인 연결을 바탕으로 open 된 포트 정보를 추출

오픈된 포트와 닫힌 포트를 syn/ack rst/ack 패킷이 응답하는것으로 확인

 

 

- 정상적인 연결 (신뢰도가 높다)

 

syn - 연결 요청

ack - 연결에 대한 확인용 숫자 +1

rst - 거부

 

 

 

하프오픈스캔

ack대신 rst를 보내서 세션을 성립하지 않게끔 로그를 남기지 않음.

스텔스 스캔 (세션이 성립하지 않고 공격 대상 시스템의 포트 활성화 여부를 알아냄

ex) ack, null, x-mas등

 

 

 

tcp헤더에 들어 있는거

출발지 목적지 포트

flag안에 들어있는 ack냐 아니면 다른거냐에 따라서 어떤 스캔인지 결정된다. 

 

 

udp스캔

icmp_PORT_UNREACHABLE을 응답

열린 포트는 아무

응답이 없는 방법을 이용

 

 

 

 

nmap -옵션 [ip]

TARGET SPECIFICATION:
  Can pass hostnames, IP addresses, networks, etc.
  Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
  -iL <inputfilename>: Input from list of hosts/networks
  -iR <num hosts>: Choose random targets
  --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
  --excludefile <exclude_file>: Exclude list from file
HOST DISCOVERY:
  -sL: List Scan - simply list targets to scan
  -sn: Ping Scan - disable port scan
  -Pn: Treat all hosts as online -- skip host discovery
  -PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports
  -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
  -PO[protocol list]: IP Protocol Ping
  -n/-R: Never do DNS resolution/Always resolve [default: sometimes]
  --dns-servers <serv1[,serv2],...>: Specify custom DNS servers
  --system-dns: Use OS's DNS resolver
  --traceroute: Trace hop path to each host
SCAN TECHNIQUES:
  -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
  -sU: UDP Scan
  -sN/sF/sX: TCP Null, FIN, and Xmas scans
  --scanflags <flags>: Customize TCP scan flags
  -sI <zombie host[:probeport]>: Idle scan
  -sY/sZ: SCTP INIT/COOKIE-ECHO scans
  -sO: IP protocol scan
  -b <FTP relay host>: FTP bounce scan
PORT SPECIFICATION AND SCAN ORDER:
  -p <port ranges>: Only scan specified ports
    Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
  --exclude-ports <port ranges>: Exclude the specified ports from scanning
  -F: Fast mode - Scan fewer ports than the default scan
  -r: Scan ports consecutively - don't randomize
  --top-ports <number>: Scan <number> most common ports
  --port-ratio <ratio>: Scan ports more common than <ratio>
SERVICE/VERSION DETECTION:
  -sV: Probe open ports to determine service/version info
  --version-intensity <level>: Set from 0 (light) to 9 (try all probes)
  --version-light: Limit to most likely probes (intensity 2)
  --version-all: Try every single probe (intensity 9)
  --version-trace: Show detailed version scan activity (for debugging)
SCRIPT SCAN:
  -sC: equivalent to --script=default
  --script=<Lua scripts>: <Lua scripts> is a comma separated list of
           directories, script-files or script-categories
  --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
  --script-args-file=filename: provide NSE script args in a file
  --script-trace: Show all data sent and received
  --script-updatedb: Update the script database.
  --script-help=<Lua scripts>: Show help about scripts.
           <Lua scripts> is a comma-separated list of script-files or
           script-categories.
OS DETECTION:
  -O: Enable OS detection
  --osscan-limit: Limit OS detection to promising targets
  --osscan-guess: Guess OS more aggressively
TIMING AND PERFORMANCE:
  Options which take <time> are in seconds, or append 'ms' (milliseconds),
  's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
  -T<0-5>: Set timing template (higher is faster)
  --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
  --min-parallelism/max-parallelism <numprobes>: Probe parallelization
  --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies
      probe round trip time.
  --max-retries <tries>: Caps number of port scan probe retransmissions.
  --host-timeout <time>: Give up on target after this long
  --scan-delay/--max-scan-delay <time>: Adjust delay between probes
  --min-rate <number>: Send packets no slower than <number> per second
  --max-rate <number>: Send packets no faster than <number> per second
FIREWALL/IDS EVASION AND SPOOFING:
  -f; --mtu <val>: fragment packets (optionally w/given MTU)
  -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
  -S <IP_Address>: Spoof source address
  -e <iface>: Use specified interface
  -g/--source-port <portnum>: Use given port number
  --proxies <url1,[url2],...>: Relay connections through HTTP/SOCKS4 proxies
  --data <hex string>: Append a custom payload to sent packets
  --data-string <string>: Append a custom ASCII string to sent packets
  --data-length <num>: Append random data to sent packets
  --ip-options <options>: Send packets with specified ip options
  --ttl <val>: Set IP time-to-live field
  --spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
  --badsum: Send packets with a bogus TCP/UDP/SCTP checksum
OUTPUT:
  -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
     and Grepable format, respectively, to the given filename.
  -oA <basename>: Output in the three major formats at once
  -v: Increase verbosity level (use -vv or more for greater effect)
  -d: Increase debugging level (use -dd or more for greater effect)
  --reason: Display the reason a port is in a particular state
  --open: Only show open (or possibly open) ports
  --packet-trace: Show all packets sent and received
  --iflist: Print host interfaces and routes (for debugging)
  --append-output: Append to rather than clobber specified output files
  --resume <filename>: Resume an aborted scan
  --noninteractive: Disable runtime interactions via keyboard
  --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
  --webxml: Reference stylesheet from Nmap.Org for more portable XML
  --no-stylesheet: Prevent associating of XSL stylesheet w/XML output
MISC:
  -6: Enable IPv6 scanning
  -A: Enable OS detection, version detection, script scanning, and traceroute
  --datadir <dirname>: Specify custom Nmap data file location
  --send-eth/--send-ip: Send using raw ethernet frames or IP packets
  --privileged: Assume that the user is fully privileged
  --unprivileged: Assume the user lacks raw socket privileges
  -V: Print version number
  -h: Print this help summary page.
EXAMPLES:
  nmap -v -A scanme.nmap.org
  nmap -v -sn 192.168.0.0/16 10.0.0.0/8
  nmap -v -iR 10000 -Pn -p 80

출처: https://nmap.org/book/man-briefoptions.html

 

Options Summary | Nmap Network Scanning

Download Reference Guide Book Docs Zenmap GUI In the Movies This options summary is printed when Nmap is run with no arguments, and the latest version is always available at https://svn.nmap.org/nmap/docs/nmap.usage.txt. It helps people remember the most c

nmap.org

 

타켓 사양 : 

  호스트 이름, IP 이름, 네트워크 등을 전달할 수 있음.

  예 : scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254

  -iL <inputfilename>: 호스트/네트워크 목록에서 입력

  -iR <num hosts>: 무작위 대상 선택

  --exclude <host1[,host2][,host3],...>: 호스트/네트워크 제외

  --excludefile <exclude_file>: 파일에서 목록 제외

 

호스트 발견 :

  -sL: 목록 스캔 - 단순 스캔 대상을 나열

  -sn: Ping 스캔 - 포트 스캔 비활성화

  -Pn: 모든 호스트 온라인 처리 - 호스트 검색 건너뛰기

  -PS/PA/PU/PY[portlist]: 주어진 포트에 대한 TCP SYN/ACK, UDP, SCTP 검색

  -PE/PP/PM: ICMP 에코, 타임스탬프, 넷마스크 요청 검색 프로브(probes)

  -PO[protocol list]: IP Protocol Ping

  -n/-R: DNS 확인 안 함/항상 확인 (기본값 : 가끔(sometimes))

  --dns-servers <serv1[,serv2],...>: 사용자 지정 DNS 서버 지정

  --system-dns: OS의 DNS 리졸버(resolver) 사용

  --traceroute: 각 호스트에 대한 추적 홉(hop) 경로

 

스캔 기술 :

  -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon 스캔

  -sU: UDP 스캔

  -sN/sF/sX: TCP Null, FIN, and Xmas 스캔

  --scanflags <flags>: TCP 스캔 플래그 사용자 지정

  -sI <zombie host[:probeport]>: Idle 스캔

  -sY/sZ: SCTP INIT/COOKIE-ECHO 스캔

  -sO: IP protocol 스캔

  -b <FTP relay host>: FTP bounce 스캔

 

포트 사양 및 스캔 순서 :

  -p <port ranges>: 지정된 포트만 스캔

    예: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

  --exclude-ports <port ranges>: 스캔에서 지정된 포트 제외

  -F: 빠른 모드 - 기본 스캔보다 적은 수의 포트 스캔

  -r: 연속적으로 포트 스캔 - 무작위로 사용하지 마세요

  --top-ports <number>: 가장 일반적인 포트에서 지정된 갯수만큼 스캔

  --port-ratio <ratio>: 비율 보다 일반적인 스캔 포트

 

서비스/버전 탐지 :

  -sV: 열린 포트를 조사하여 서비스/버전 정보 확인

  --version-intensity <level>: 0 ~ 9 설정 (모든 프로브 시도, 여기서 0은 라이트(light))

  --version-light: 가능성이 가장 높은 프로브로 제한 (강도 2)

  --version-all: 모든 단일 프로브 시도 (강도 9)

  --version-trace: 자세한 버전 스캔 활동 표시 (디버깅용)

 

스크립트 스캔 :

  -sC: --script=default 옵션과 동일

  --script=<Lua scripts>: <Lua scripts> 는 쉼표로 구분된 디렉토리, 스크립트 파일 또는 스크립트 범주 목록임.

  --script-args=<n1=v1,[n2=v2,...]>: 스크립트에 인수 제공

  --script-args-file=filename: 파일에 NSE 스크립트 인수 제공

  --script-trace: 주고받은 모든 데이터 표시

  --script-updatedb: 스크립트 데이터베이스 업데이트

  --script-help=<Lua scripts>: 스크립트 도움말 표시 (<Lua scripts> 는 쉼표로 구분된 스크립트 파일 또는 스크립트 범주 목록임.)

 

OS 탐지 :

  -O: OS 탐지 활성화

  --osscan-limit: OS 탐지를 유망한 대상으로 제한

  --osscan-guess: OS 를 더 적극적으로 추측

 

타이밍 및 성능 :

  <time>을 사용하는 옵션은 초 단위이거나 값에 'ms'(밀리초), 's'(초), 'm'(분) 또는 'h'(시간) 를 추가함. (예 : 30m)

  -T<0-5>: 타이밍 템플릿 설정 (높을수록 빠름)

  --min-hostgroup/max-hostgroup <size>: 병렬 호스트 스캔 그룹 크기

  --min-parallelism/max-parallelism <numprobes>: 프로브 병렬화

  --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: 프로브 왕복 시간 지정

  --max-retries <tries>: 포트 스캔 프로브 재전송 수를 제한

  --host-timeout <time>: 지정된 시간 지나면 대상 포기

  --scan-delay/--max-scan-delay <time>: 프로브 간 지연 조정

  --min-rate <number>: 초당 지정된 숫자보다 느리지 않게 패킷 보내기

  --max-rate <number>: 초당 지정된 숫자보다 빠르게 패킷 보내기

 

방화벽/IDS 회피 및 스푸핑 :

  -f; --mtu <val>: fragment 패킷 (선택적으로 주어진 MTU 포함(optionally w/given MTU))

  -D <decoy1,decoy2[,ME],...>: 미끼(decoys)로 스캔 은폐

  -S <IP_Address>: 스푸핑 소스 주소

  -e <iface>: 지정된 인터페이스 사용

  -g/--source-port <portnum>: 주어진 포트 번호 사용

  --proxies <url1,[url2],...>: HTTP/SOCKS5 프록시를 통한 릴레이 연결

  --data <hex string>: 전송된 패킷에 사용자 지정 페이로드 추가

  --data-string <string>: 전송된 패킷에 사용자 지정 ASCII 문자열 추가

  --data-length <num>: 전송된 패킷에 임의의 데이터 추가

  --ip-options <options>: 지정된 IP 옵션으로 패킷 보내기

  --ttl <val>: IP TTL(Time-To-Live) 필드 설정

  --spoof-mac <mac address/prefix/vendor name>: MAC 주소 스푸핑

  --badsum: Send packets with a bogus TCP/UDP/SCTP checksum

 

결과물 :

  -oN/-oX/-oS/-oG <file>: 주어진 파일 이름에 대해 각각 일반, XML, s|<rIpt kIddi3, Grepable 형식 스캔 결과물

  -oA <basename>: 한번에 세 가지 주요 형식으로 출력

  -v: 상세 수준을 높이기 (효과를 높이려면 -vv 사용)

  -d: 디버깅 수준 높이기 (효과를 높이려면 -dd 사용)

  --reason: 포트가 특정 상태에 있는 이유 표시

  --open: 열려있거나 열려있을 가능성이 있는 포트만 표시

  --packet-trace: 보내고 받은 모든 패킷 표시

  --iflist: 호스트 인터페이스 및 경로 표시 (디버깅용)

  --append-output: 지정된 결과 파일 대신에 추가

  --resume <filename>: 중단된 스캔 재개

  --stylesheet <path/URL>: XML 결과물을 HTML 로 변환하는 XSL 스타일 시트

  --webxml: 보다 이식 가능한 XML 를 위해 Nmap.Org 의 참조 스타일 시트

  --no-stylesheet: XSL 스타일 시트와 XML 결과물의 연결 방지

 

기타 : 

  -6: IPv6 스캔 활성화

  -A: OS 탐지, 버전 탐지, 스크립트 스캔 및 경로 활성화

  --datadir <dirname>: 사용자 지정 Nmap 데이터 파일 위치 지정

  --send-eth/--send-ip: raw 이더넷 프레임 또는 IP 패킷을 아용하여 전송

  --privileged: 사용자에게 완전한 권한이 있다고 가정함

  --unprivileged: 사용자에게 raw 소켓 권한이 없다고 가정함

  -V: 버전 번호 출력

  -h: 도움말 요약 페이지 출력

 

예제 :

  nmap -v -A scanme.nmap.org

  nmap -v -sn 192.168.0.0/16 10.0.0.0/8

  nmap -v -iR 10000 -Pn -p 80

-sP 옵션 사용시 활성화된 시스템(호스트) os를 확인

--top-ports N(개수) 많이쓰는 포트

--script 취약점 스캔이 가능한 추가옵션 

--packet-trace 수행한동안 모든 패킷 표시

 

와이어 샤크로 볼시 다음과 같이 추가해주면 편하게 볼 수 있다

 

 

ping에 대해서 

리눅스는 디폴트가 응답, ttl = 64

윈도우는 디폴트가 비응답 ttl = 128

ttl = time to live -> 페킷이 네트워크 안에서 방황하면 버리도록한다, 출발지에 알려줌

 

 

 

hping3 > ping 의 진화형 더 다양한 기능이 있다.

 

공격

 

 

 

네트워크 스캐닝 대응방안

네트워크 장비에 의한 필터링) ACL

서버에서 실행중인 불필요한 서비스 중지

침입탐지시스템 ids 및 침입차단시스템 ips 연동

 

 

근거리 네트워크 공격 개요 (LAN 내부)

주로 2계층에서 이루어진다

주요공격 -

중간자 공격

ARP(IP로 MAC주소를 알아냄 반대는 RARP)를 이용한 중간자 공격(MITM) 스위치가 필요한 MAC주소를 알아냄

STP공격 

STP는 스위치 네트워크 환경에서 사용되는 프로토콜

선을 잘못 꽂으면 발생하기도, 루핑(통신이 돌고 도는거)방지

악의적보다 실수가 많다

MAC 스푸핑 공격

연결되어 있는 MAC주소를 변조하는 공격

특정장치로 위장하거나 해당 장치의 서비스를 거부하는 공격으로 활용

CAM테이블(ARP테이블) 오버플로우

전화번호부 MAC주소 버젼(메모리)을 쓰잘때기 없는 번호들로 가득 체우기 > 서비스 거부 유형

DHCP 서버에 DOS곡격을 시행, 새로운 클라이언트가 IP를 자동으로 할당받지 않도록 공격

 

 

 

 

ARP 스푸핑

두 단말간 사이에서 공격자를 공유하도록 설정

ARP REPLY를 계속 보내서 공격자를 위장시킴

> 실습으로 계속....