웹 해킹 기본 학습

1. SQL 인젝션

(1) 개요

웹 어플리캐이션에서 입력 받아 데이터베이스로 전달하는 정상적인 SQL쿼리를 변조/삽입하여 불법 로그인/DB도청/시스템 명령수행 등을 하며 비정상적인 접근을 하는 공격

(2) 취약점 스캐너

Nikto: GNU 기반

SQLmap: 블라인드 SQL 인젝션 수행

Absinthe: GUI 기반

(3) 공격 유형 분류

1) Error Base

DB쿼리 에러를 기반으로 점진적으로 정보 획득

 

2) Blind SQL injection

오류 메시지가 아닌 쿼리의 참과 거짓을 통해 점진적으로 데이터를 알아가는 방식

(3) 공격 방법에 의한 분류

1) Form SQL injection

 

2) Union SQL injection

 

3) Stored SQL injection

" ; (연결함수)" 를 사용해 악성프로그램 실행

 

 

 

4) Mass SQL injection

대량의 js,swf,exe 함수 호출

 

(4) SQL 인젝션 대응방안

 

 

2. 크로스사이트 스크립트(XSS)

(1) 개요

검정되지 않은 외부 입력 값으로 인해 사용자의 웹 브라우저에서 의도하지 않은 스크립트가 실행될 수 있는 취약점, 클라이언트에서 접속자의 권한으로 악성 코드가 실행된다.

(2) 공격유형 및 대응책

 

 

 

 

 

 

 

3. CSRF(Cross site Request Forgery)

공격자는 정상 사용자로 위조한 요청을 올려서 공격자의 권한으로 문제를 발생시킴.

 

(2) 대책

 

 

4. 웹 로그 분석

(1) 요청

메소드

설명

GET

리소스를 서버에 요청

POST 

리소스에 데이터를 전달하여 처리한 결과를 서버에 요청

HEAD 

리소스 없이 헤더 정보만 포함, 헤더값만 서버로 전송할 때, 검색엔진에서 사용

OPTIONS 

서버가 지원하는 메소드 확인 목적

CONNECT 

웹 서버를 프록시로, 터널링 목적

PUT 

요청한 데이터를 서버에 저장 , 사용안함

TRACE 

헬스체크 용도

DELETE

요청 리소스 삭제

 

 

 

 

 

(2) 응답

 

 

 

 

 

 

 

 

 

5. 시큐어 코딩

 

분류

설명

공격종류

예제

1

입력데이터 검증 및 표현

입력값 검증 누락, 잘못된 형식지정

SQL 인젝션

Request. getParameter("user_id");

XSS 

<%=name%>

name=name.replaceAll("<","&lt;")

2 

보안기능

보안기능 비적절하게 구현된 보안 취약점

CSRF

재인증 메커니즘 없음

bank account account = new

 

재인증 메커니즘 도입

string new username = request.getparameter("username");

중요 자원에 대한 잘못된 권한 설정

new file reader("/etc/passowrd/")

 

String cmd = "umask 77"

3

시간 및 상태

시간적 개념을 포함한 에러

레이스 컨디션

string name;

string name = hreq.getparameter("name)

4

에러 처리

에러처리를 불충분하게 처리하여 보안약점 발생

오류 메시지를 통한 정보 노출

e.printstack trace();(에러다보임)

 

System.out.println("예외발생"메시지로 프린트해서 보냄)

5

코드 오류

개발자의 코딩오류로 인한 약점

널(null)포인터 역참조

cmd = cmd.trim();

if (cmd !=null)

6

캡슐화

캡슐화 오류

잘못된 세션에 의한 데이터 정보 노출

String name = request.getparameter("name")

 

Private String name;

7

API 오용

보안에 취약한 API사용

DNS lookup에 의한 보안결정

if(addr.getcanonicalhostname().

 

if(ip.equals(trusted.addr)

입 보 시 에 코 캡 A

 

 

 

6. OWASP TOP 10

  

분류

예방

1 

1 

인젝션

데이터 DB에 올리기 전 필터링 실행

특수문자 신중히 처리

입력 데이터 충분한 검증

2 

2 

취약한인증과 세션관리

강력한 인증 방법 도입

로그인 타임아웃 설정

3 

1

XSS 

중요정보 쿠키에 저장하지 않기

불필요한 문자열 필터링

스크립트가 있는 경우 글 올리기 제외하기

4 

 

안전하지 않은 객체 직접 참조

접근권한에 대한 서버 단 점검

입력창 대신에 드롭다운 형태의 메뉴 구성

5 

2

보안상 잘못된 구성

소프트웨어 업데이트

정기적 스캐닝과 감사

불필요한 서비스/계정 등 제거하기

6 

 

민감 데이터 노출

개인정보 암호화

강력한 암호화 알고리즘 사용

SHA-256 이상의 해시 알고리즘 사용

7 

 

기능 레벨 접근통제 누락

어플리케이션 기능레벨 점검 및 통제

어플리케이션 일관성 정책

8 

2

CSRF 

세션에 고유한 토큰 값 생성하기

고유 토큰을 희든 필드에 포함시키기

재 인증 메커니즘 도입

9 

 

알려진 취약점 구성요소 사용

컴포넌트 최신 업데이트

컴포넌트 정보 파악

10 

 

검증되지 않은 리다이렉트와 포워드

리다이렉트와 포워드 사용 제한

안 보 민 인 크 크

 

3. Burf Suiet(웹프락시 및 취약점점검도구)를 이용한 분석

인코딩 문자

URL문자

스페이스(띄우기)

%20

= (이코르)

%3d

'(싱글쿼터)

%27

"(더블쿼터): %22

%22

 

5. 정보통신망법 법률 문제

정보통신망법

개인정보보호법

법률 기준

개인정보의 기술적, 관리적 보호조치 기준

개인정보의 안전성

확보조치 기준

접근권한 부여,

변경,말소 기록

5년

3년

접속기록

6개월

6개월

정기점검

월 1회

반기 1회

 

Layer 

역할

Protocol

PDU 

장비

1 

physical 

1)물리적 연결 담당

디지털 데이터를 전기적/광학전 신호로 전달함

 

Signal 

NIC

Dummy HUB

리피터

2 

data link 

1)인접한 노드간 신뢰성 있는 전송

node-To-node reliable delivery

노드간 프레임 전달을 위해

MAC Address

Frame 

L2스위치

브리지

Frame Relay

FDDI, X.25

3 

network 

1)최적의 경로 선정해서 포워딩하는 역할

 

end-To-end delivery

host-To-host communication

IP(TCP/IP), IPX(Novel Netware)

packet 

라우터

L3 스위치

4 

transport 

1)에러나 손실 없이 안전하게 전송되는 것을 보장

 

end-To-end reliable delivery

process-To-process communication 

TCP , UDP, SCTP, SPX

segment

L4 스위치

5 

session 

1)논리적인 연결상태를 유지하는 것을 보장

세션 생성, 관리, 소멸 등 담당

 

X

 

6 

Presentation 

1)데이터에 대한 변환담당

압축/압축해제

인코딩/디코딩

인크립션/디크립션

 

X

 

7 

Application 

1)사용자와의 인터페이스 담당

Network server/client program

FTP, Telnet, Http …

Message(data)

 
 

Layer 

특징

장단점

특화 기능

1 

physical 

 

1. 스니핑 공격에 취약(NIC를 promiscuous mode로 설정시)

ex) ifconfig eth1 promisc

 

2 

data link 

1)LLC:

네트워크 계층과 연결 담당. 오류검출

2)MAC:

물리적 계층과 연결담당, 데이터 송수신 확인

스위치 환경에서 공격기법

1. 스위치 재밍(MAC flooding)

스위치의 MAC테이블 오버플로우 시켜서 도청

2. ARP 스푸핑

자신의 MAC주소로 위조한 공격자가 ARP Reply 패킷을 희생자에게 지속 전달, 희생자 cache 변조해 도청

3. ARP 리다이렉트

공격자가 라우터인 것처럼 위장하여 ARP Reply 패킷을 로컬 네트워크에 지속전달, 희생자cache 변조해 도청

4. ICMP 리다이렉트

공격자가 특정IP대역으로 나가는 패킷의 경로를 자신의 주소로 위장해 ICMP Redirect 메시지 전송하여 도청

5. 포트미러링/SPAN사용

관리자의 실수로 인한 미러설정된 포트로 도청

1)흐름제어

받을 수 있을 만큼만 전송하기

a)stop-and-wait: 완료까지 기다림

b)sliding window: 조금씩 보냄

2)오류제어

a)BEC(후진오류수정방식)

송신측에서 오류검출 부가 정보 함께 전송, 수신측에서 검증 및 필요시 재요청(ARQ)

b)FBC(전진오류수정방식)

송신측에서 오류검출 및 수정정보 함께 전송, 에러 없음

3)회선제어

단방향,양방향 통신 제어(duplex)

3 

network 

노드에 대한 논리적인 주소:

IP 주소 사용

브로드캐스트와 멀티캐스트를 포워딩 하지 않는다.

1) 서로 다른 Vlan간 통신 기능

2) QoS 기능

3) ACL 기능

4 

transport 

Process 식별 주소:

포트 주소 사용

SLB(Server Load Balancing)

트래픽 부하분산과 Failover 기능

1) 분할과 재조합

2) 연결지향과 비연결 지향

a)연결지향: TCP

b)비연결 지향: UDP

3)흐름제어:

양 종단 노드간 진행, 범위가 넓음

4)오류제어

5)혼잡제어

5 

session 

   

6 

Presentation 

   

7 

Application 

   

 

2. 다중화/역다중화

다중화-하나의 매체를 여러 영역에서 동시에 사용하는 기법, 상위의 여러계층 프로토콜à하위의 하나의 프로토콜 사용

역다중화-반대

3. 캡슐화와 역캡슐화

캡슐화-상위계층 데어터à하위계층 데이터 전송시 부가정보(헤더)추가해서 전송하는 것

역캡슐화-반대

4. TCP 헤더 분석

2) RST 패킷을 보안장비에서 활용하는 경우

TAB을 사용해 out of pass 방식으로 사용하는 상황에서 종단 클라이언트와

서버 사이의 통신이 잘못된 것을 IPS가 탐지했을 때 IPS는 양쪽(클라이언트,서버)에게

TCP RST 패킷을 보내어 더 이상 전송되지 않도록 차단한다.

3) TCP 연결과정(소켓 상태 정보)

 

4) TCP 종료과정(소켓상태정보)

5. ARP

IP를 MAC으로 변환하는 역할

1)ARP Spoofing

공격자가 네트워크 내 특정 호스트의 MAC주소를 자신의 MAC으로 위조한 ARP Reply패킷을

희생자에게 지속전송하여 희생자의 ARP Cache table을 위조하는 것.

2) ARP Redirect

희생자의 ARP Cache의 gateway 주소를 공격자 MAC주소로 위장하여 외부로 나가는 패킷을 도청하는 것

3) 대응방법

A) ARP 캐쉬를 정적으로 설정하기(ARP -s 1.1.1.1 xx-xx-xx-xx-xx-xx)

5.1 GARP(Gratuitous ARP)

1) 개요

장비가 브로드캐스트로 다른 장비에게 자신의 존재를 알리는 목적으로 사용

출발지가 목적지가 동일한 ARP요청

2) 목적

IP충돌을 감지하는 목적으로 사용

상대방의 ARP Cache 갱신

 

6. ICMP

1) 목적:

비연결적이고 비신뢰성인 IP 프로토콜의 단점 보안

IP패킷 전송시 에러의 발생원인 및 네트워크 상태 출력

에러 레포트와 쿼리 기능으로 크게 구성

용도

Type 

번호

Code 

번호

Error Report 

destination unreachable

Network unreachable

Protocol unreachable

port unreachable

host unreachable

 

Redirection 

  

Time Exceed 

11 

  

Query message 

Echo Request 

  

Echo Reply 

  

 

2) ICMP Redirect 공격

ICMP Redirect 메시지를 공격자가 원하는 형태로 만들어 특정 목적지로 향하는 패킷을 공격자 쪽으로 변경하도록 하는 것

3) ARP Redirect : ICMP Redirect

희생자의 ARP Cache 테이블 : 희생자의 라우팅 테이블

 

7. DNS

1) 검색 순서

 

검색경로

검색장소

검색방법

공격방법

1

etc/hosts 검색

클라이언트

검색

DNS Spoofing

2

local cache 검색

클라이언트

검색

DNS Spoofing

3

local dns 질의

로컬DNS 서버

recursive(재귀질의)

DNS Cache Poisoning

4

authoritative 검색

위임 DNS 서버

Iterative(반복질의)

DDOS, DRDOS

 

2) DNS Cache 명령어

ipconfig /displaydns à 현재 DNS 캐쉬 보기

ipconfig /flushdns àDNS 캐쉬 정보 갱신하기

3) DNS Spoofing 공격

 

4) DNS Cache Poisoning

 

5) DNS 존 트랜스퍼 파일의 레코드 타입

6) 순환질의 제한하기 – 사내 서버 등을 운영할 경우

etc/named.confi

acl internal {127.0.0.1; 192.168.1.0/24;};

allow-recursion {none; }; à 허용할 IP를 입력하거나 내부쿼리만 하면 internal 입력 후 저장

7) 존 트랜스퍼 제한하기

/etc/named.conf

allow-transfer {none;}; ànone 혹은 로컬서버 주소 입력

 

8. 포트 스캐닝 nmap 사용하기

1) TCP Connect Scan(sT)

namp -T4 -sT -p 1-1023 192.168.8.10

2) TCP syn(half-open) scan

nmap -T4 -sS -p 23 192.168.1.1

방화벽 차단시의 메시지: Type3: destination unreachable code10: administratively prohibited

3) TCP Fin Scan

nmap -T4 -sF -p 23 192.168.1.1

4) TCP Null Scan

nmap -T4 -sN -p 23 192.168.1.1

5) TCP X-MAS Scan

nmap -T4 -sX -p 23 192.168.1.1

 

6) TCP Ack Scan

nmap -T4 -sA -p 23 192.168.1.1

7) UDP Scan

nmap -T4 -sU -p 23 192.168.1.1

 

8) Decoy Scan

nmap -T4 -sS -D 192.168.100.1 -p 23 192.168.1.1

9) 기타

 

9. DoS 공격

1) Dos : DDoS

공격자가 1개 : 공격자가 다수

2) ping of death

icmp 패킷을 정상적인 크기보다 아주 크게 만들어 다수 프래그먼트가 발생하게 함.

수신측에서 재조합하는 과정에서 부함 및 오버플로우 발생 à DoS

대응방안: OS 패치

3) Land of attack

source 와 destination IP 및 포트를 동일하게 하여서 ping request 보냄

수신자는 자기자신에게 응답하느라 자원소모 à가용성 손상àDoS

대응방안: OS패치, 방화벽 룰셋,

4) Smurf attack

source ip를 희생자 ip로 위조한 후 증폭네트워크로 icmp request를 broadcast하고

희생자에게 다수의 reply 가 전송됨àDoS

대응방안: 라우터에 no ip directed-broadcast 설정

5) Tear Drop attack

IP 프래그먼트 오프셋을 중첩시키거나 큰 값을 설정하여 전송하면

수신자가 이를 재조합 할 수 없어 overflow 발생 àDoS

Bonk, Boink 공격 등이 있음

대응책: OS의 보안패치

 

10. DDoS 공격

1)구조

2)종류

3)

3) 네트워크 대역폭 소진 공격 : udp flooding, icmp flooding

4) 서비스 마비 공격

a) tcp syn flooding

방법:

공격자의 다량의 syn 패킷을 희생자에게 전송하여 서버의 백로그 큐를 가득 채워 서비스불가àDDoS

대응책

-syn cookie 설정하기à sysctl -w net.ipv4.tcp_syn_cookies = 1

-백로그 큐를 늘리기àsysctl -w net.ipv4.tcp_max_syn_backlog = 1024

-방화벽 또는 DDoS 대응장비 사용à초당 요청 개수 제한(rate limit)

 

b) http get flooding

다량의 http get 메시지 반복 요청à서버 자원소모àDDoS

 

c) Slow http Header Dos :

헤더 끝을 의미하는 Empty Line을 보내지 않고 의미 없는 헤더필드를 전송-웹서버 무한대기-DDoS

 

d) Slow http post Dos(RUDY)

content length 를 매우 크게 하고 요청 시 한 개씩만 보낸다.

 

e) Slow http read DoS:

클라이언트가 윈도우 사이즈를 "0"로 조작

 

F) http continuation

패킷에 헤더 없이 데이터만 보내는 공격

 

G) 해시도스

http 메시지의 매개정보 전달을 위한 해쉬테이블을 조작하여 전송해 해쉬값 충돌을 일으켜 DDoS 수행

H) 헐크도스

http get flooding 의 다른 방법, 동일 URL 지속 요청은 차단되기 때문에 IP를 변경하며 공격하여 DDoS를 일으킴

 

12. DRDoS

 

12. TCP DUMP 사용법

13. 라우터 보안

1) 기본 설정 및 암호 설정

Switch>

Switch>en

Switch#

Switch#config t

Switch(config)#

Switch(config)#enable password cisco

Switch(config)#enable secret cisco

Switch(config)#service password-encryption

2) Access List

a) 스탠다드(1~99)

Switch(config)#access-list 5 permit host 192.168.1.100

b) 확장버전

Switch(config)#access-list 150 deny ip host 1.1.1.1 100.100.100.100 0.0.0.255

 

3) 텔넷 보안

Switch(config)#access-list 10 permit host 10.10.10.10

Switch(config)#access-list 10 deny any

Switch(config)#line vty 0 4

Switch(config-line)#access-class 10 in

Switch(config-line)#end

 

4) SSH 보안

Switch(config)#ip domain-name kr.router.com

Switch(config)#ip ssh version 2

Switch(config)#crypto key generate rsa

Switch(config)#line vty 0 4

Switch(config-line)#transport input ssh

Switch(config-line)#end

Switch#

5) SNMP보안

Switch(config)# snmp-server krrouter ro 11

Switch(config)#snmp-server contact mr.chung@krrouter.com

Switch(config)#access-list 11 permit host 211.1.2.5

Switch(config)#access-list 11 deny any

Switch(config)#interface fastethernet 0/0

Switch(config-if)#ip access-group 11 in

Switch(config-if)#end

 

6) redirect 제거

Switch(config)#interface fastethernet 0/0

Switch(config-if)#no ip redirects

Switch(config-if)#end

 

7)directed broadcast 제거

Switch(config)#interface fastethernet 0/0

Switch(config-if)#no ip directed-broadcast

Switch(config-if)#end

 

8)source route 제거

Switch(config)#no ip source-route

Switch(config)#end

 

9) Finger 제거

Switch(config)#no ip service finger

Switch(config)#end

 

10)http 서버 제거

Switch(config)#no ip http server

Switch(config)#end

 

10) cdp 제거

Switch(config)#no cdp run

Switch(config)#interface fastethernet 0/0

Switch(config-if)#no cdp enable

Switch(config-if)#end

 

11) proxy arp 제거

Switch(config)#interface fastethernet 0/0

Switch(config-if)#no ip proxy-arp

Switch(config-if)#end

12) 기타

Switch(config)#no service pad

사용하지 않는 인터페이스 shutdown

13)주소 위변조 방지

Switch(config)#interface fastethernet 0/0

Switch(config-if)#ip verfy unicast reverse-path

Switch(config-if)#end

 

14.블랙홀 필터링

Router(config)#ip route 211.254.0.1 255.255.255.0 loopback 0

Switch(config)#end

 

 

 

 

 

 

 

 

 

+ Recent posts