1. robots.txt

- 로봇배제표준(robots exclusion protocol)

- 웹 사이트에 웹 크롤러와 같은 로봇들의 접근을 제어하기 위한 규약으로, 루트디렉토리에 위치

- 크롤러란 조직적, 자동화된 방법으로 웹을 탐색하는 컴퓨터 프로그램

[캡쳐 1] 구글 robots.txt 중 일부

2. 작성 양식

- 해당 파일은 [캡쳐 1]에서도 볼 수 있듯이 User-agent, Disallow, Allow로 이루어져 있음.

User-agent : robots.txt 파일의 규칙을 적용할 로봇의 이름
Disallow : 차단할 URL 경로
Allow : 허용할 URL 경로

- Disallow, Allow 항목을 적절히 잘 조합하여 사용.

2.1) 작성예시

모든 로봇 허용

User-agent: *
Disallow:

모든 로봇 금지

User-agent: *
Disallow: /

3. 관점

3.1) 해커 관점

- 민감한 정보를 저장하고 있는 페이지에 대해 웹 크롤러가 접근하지 못하도록 Disallow에 해당 URL 설정 

- robots.txt에 접근한 해커들은 Disallow에 설정된 URL에 민감정보가 저장되어 있을 것이라 추측 및 관련된 공격 시도 가능

3.2) 보안 관점

- 해커들이 해당 파일을 통해 정보를 획득할 수 있으므로 일부 취약점 스캐너에 포함되어 있는 경우도 있음

- 누구나 접근할 수 있으므로, 적절한 접근제어 조치를 취하여야 함

'취약점 > 기타' 카테고리의 다른 글

Deface Attack_중국 샤오치잉 해킹 그룹  (0) 2023.04.10
IFS(Internal Field Separator) String  (0) 2023.02.01
DNS Zone Transfer  (0) 2022.12.07
Brute Force Attack  (0) 2022.11.16
TLS OpenSSL HeartBleed Vulnerability(CVE-2014-0160)  (0) 2022.09.29

[캡쳐 1] OWASP (https://owasp.org/)

1. OWASP TOP 10

- OWASP(Open Web Application Security Project)는 오픈소스 웹 애플리케이션 보안 프로젝트로, 주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구

- OWASP에서 3~4년에 한번씩 10대 애플리케이션 취약점을 발표하며, 이것이 OWASP TOP 10

- 즉, 웹 애플리케이션 취약점 중에서 빈도가 많이 발생하고, 보안상 영향을 크게 줄 수 있는 것들 10가지를 선정한 문서

2. OWASP TOP 10 2021 목록

[캡쳐 2] OWASP TOP 10 2021 (https://owasp.org/)

A01 : Broken Access Control (접근 권한 취약점)

- 접근 제어는 사용자가 권한을 벗어나 행동할 수 없도록 정책을 적용.

- 만약 엑세스 제어가 취약하면 사용자는 주어진 권한을 벗어나 모든 데이터를 무단으로 열람, 수정 혹은 삭제 등의 행위가 가능해짐

A02 : Cryptographic Failures (암호화 오류) 

- Sensitive Data Exposure(민감 데이터 노출)의 명칭이 변경.

- 적절한 암호화가 이루어지지 않으면 민감 데이터가 노출될 수 있음

A03: Injection (인젝션) 

- 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분으로써, 인터프리터로 보내질 때 취약점이 발생 

A04: Insecure Design (안전하지 않은 설계)

- 누락되거나 비효율적인 제어 설계로 표현되는 다양한 취약점을 나타내는 카테고리

- 안전하지 않은 설계와 안전하지 않은 구현에는 차이가 있지만, 안전하지 않은 설계에서 취약점으로 이어지는 구현 결함이 있을 수 있음.

A05: Security Misconfiguration (보안설정오류)

- 최신 보안기능이 비활성화 되거나 안전하지 않게 구성되었을 때 발생합니다.

- Ex) 애플리케이션 스택의 적절한 보안 강화가 누락되었거나 클라우드 서비스에 대한 권한이 적절하지 않게 구성되었을 때, 불필요한 기능이 활성화 되거나 설치되었을 때, 기본계정 및 암호화가 변경되지 않았을 때, 지나치게 상세한 오류 메세지를 노출할 때

A06: Vulnerable and Outdated Components (취약하고 오래된 요소) 

- 지원이 종료되었거나 오래된 버전을 사용할 때 발생

- 애플리케이션 뿐만 아니라, DBMS, API 및 모든 구성요소 들이 포함

A07: Identification and Authentication Failures (식별 및 인증 오류)

- Broken Authentication(취약한 인증)이 identification failures(식별 실패)까지 포함하여 더 넓은 범위를 포함할 수 있도록 변경.

- 사용자의 신원확인, 인증 및 세션관리가 적절히 되지 않을 때 취약점이 발생 가능

A08: Software and Data Integrity Failures(소프트웨어 및 데이터 무결성 오류)

- 2021년 새로 등장한 카테고리

- 무결성을 확인하지 않고 소프트웨어 업데이트, 중요 데이터 및 CI/CD 파이프라인과 관련된 가정을 하는데 중점을 둠

A09: Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)

- Insufficient Logging & Monitoring(불충분한 로깅 및 모니터링) 이 Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)로 변경

- 로깅 및 모니터링 없이는 공격활동을 인지할 수 없음.

A10: Server-Side Request Forgery (서버 측 요청 위조)

- 2021년 새롭게 등장.

- SSRF는 웹 애플리케이션이 사용자가제공한 URL의 유효성을 검사하지 않고 원격 리소스를 가져올 때마다 발생.

- 공격자는 방화벽, VPN 또는 다른 유형의 네트워크 ACL(액세스 제어 목록)에 의해 보호되는 경우에도 응용 프로그램이 조작된 요청을 예기치 않은 대상으로 보내도록 강제할 수 있음.

1. 사회공학기법 유형

[캡쳐 1] 사회공학 공격 분류 (https://blog.naver.com/isacastudent/150187546768)

분류 명칭 설명
인간 기반
(Human Based)
직접 접근 - 권력, 동정심, 가장으로 대상에 접근하여 정보 획득
도청/훔쳐보기 - 도청 및 어깨넘어로 훔쳐보아 정보획득
휴지통 뒤지기 - 공격 대상과 관련된 문서들을 휴지통에서 수거하여 유용한 정보들을 수집
프리텍스팅
(Pretexting)
- 가장 많이 이용하는 공격 유형 중 하나
- 신분을 조작하거나 적당한 시나리오를 꾸며내 피해자가 스스로 가해자가 원하는 행동을 하게 만듦
테일 게이트, 피기배킹
(Taligating), (Piggybacking)
- 제한된 구역에 대한 출입 권한이 없는 사람이 앞사람을 따라 진입하는 것
쿼드 프로 쿼
(quid pro quo)
- ‘무엇을 위한 무엇’이라는 뜻으로, 대상, 보상 또는 보복의 의미로 사용
- (…에 대한) 보상으로 주는 것 '네가 이걸 해주면 나는 저걸 줄게' 라는 식의 물건 혹은 서비스의 교환
컴퓨터 기반
(Computer Based)
- 피싱
(Phishing)
- 피싱 사이트를 통해 정보 획득
- 파밍
(Pharming)
- DNS를 속여 사용자가 진짜 사이트로 오인하도록 유도하여 정보 획득
- 스미싱
(Smishing)
- 악성 URL이나 앱이 포함된 문자를 보내 설치 및 클릭 유도
- 악성 소프트웨어
(Malware)
- 메일, 감염된 프로그램 등을 전송하여 악성 소프트웨어 설치 유도
- 포렌식
(Forensic)
- 대상의 PC, 노트북 등 분석
물리적 수법 - 베이팅
(Baiting)
- 피해자를 특정해 놓지 않고 누군가는 걸리라는 방식
- 해킹 수법이라는 생각이 들지 않는 방법으로 미끼를 여기저기 뿌리는 방식

2. 사회공학기법 대응

구분 설명
조직적 - 주기적 보안 교육
기술적 - 보안솔루션 적용(DLP, DRM 등)
- 접근제어(MAC,DAC,RBAC,NAC)
- 2 Factor 인증

 

'취약점 > Social Engineering' 카테고리의 다른 글

Browser in the Browser (BitB)  (0) 2023.04.20
랜섬웨어 그룹 사칭 피싱메일  (0) 2023.04.03
심 스와핑 (SIM Swapping)  (0) 2023.02.21
BEC 공격과 EAC 공격  (0) 2023.02.04
사회공학기법 #1 개요  (0) 2022.08.24

1. 사회공학(Social Engineering)이란

[캡쳐 1] 사회공학 공격 분류 (https://blog.naver.com/isacastudent/150187546768)

- 기술적인 방법이 아닌 사람들 간의 신뢰를 바탕으로 사람을 속여 정보를 획득하는 기법.

- 케빈 미트닉 : 기업 정보 보안에 있어서 가장 큰 위협은 컴퓨터 바이러스, 패치가 적용되지 않은 중요한 프로그램이나 잘못 설정된 방화벽이 아니다. 가장 큰 위협은 바로 당신이다.

2. 공격 흐름

정보 수집하기

- 공격 대상과 관련된 사적, 공적 정보 등 관련된 다양한 정보를 수집.

- 쓰레기통 뒤지기, 파쇄된 문서 맞추기, SNS 등을 통해 정보 수집.

의사소통

- ① 단계에서 얻은 정보를 바탕으로 공격 대상과 관계 형성 및 추가 정보 획득.

- 공격 대상과 신뢰를 형성하고 경계심을 줄임.

도출

- ② 단계에서 형성한 신뢰를 통해 공격자가 원하는 정보나 목표를 이루기 위해 공격 대상에게 요청.

프리텍스팅

- 공격 대상이 공격자의 요청에 응할 경우 피해가 발생.

2.1) 사회공학 사이클

- 케빈 미트닉에 의한 4단계 분류

[캡쳐 2] 사회공학 사이클 (https://blog.naver.com/isacastudent/150187546768)

1단계(research)

공격자는 목표 기업의 사내 보안 규정에 휴대용 저장 매체(ex: USB 메모리) 보안에 관련된 사항이 없으며 USB 메모리 사용에 대한 규정이 없다는 것을 발견하였다.

2단계(developing trust)

공격자는 최근에 나온 USB 3.0 메모리를 구매한 후 백도어를 생성하는 악성 코드를 삽입한다. 공격자는 USB 3.0 메모리를 퇴근 시간에 목표 회사의 현관에 떨어뜨려 놓는다.

3단계(exploiting trust)

보안 교육을 제대로 받지 않은 신입 사원이 마침 업무에 필요한 USB 3.0 메모리를 발견하고 호기심과 함께 자신의 업무용 컴퓨터에 연결을 해 본다. 컴퓨터가 USB 3.0 메모리를 인식함과 동시에 해당 컴퓨터에는 백도어가 자동으로 설치된다.

4단계(utilizing trust)

공격자는 백도어가 설치된 컴퓨터에 수시로 접속하여 정보를 빼내거나 사내 네트워크에 접속하여 또 다른 취약점이 있는지 확인한다.

'취약점 > Social Engineering' 카테고리의 다른 글

Browser in the Browser (BitB)  (0) 2023.04.20
랜섬웨어 그룹 사칭 피싱메일  (0) 2023.04.03
심 스와핑 (SIM Swapping)  (0) 2023.02.21
BEC 공격과 EAC 공격  (0) 2023.02.04
사회공학기법 #2 유형 및 대응  (1) 2022.08.25

- 각 공격방식의 특징에따라 대응 방법이 다르다.

- 일반적으로 대응하는 방식은 다음과 같다.

 

① DDoS 대응 서비스 가입

- 한국인터넷 진흥원에서 제공하는 사이버 대피소 혹은 클린존 서비스 이용

 

② 백업 서버 구축

- 디도스 공격에따른 서비스 장애를 최소화하기 위해 백업 서버 구축

 

③ 공격 대상 노출 최소화

- 공격에 이용 및 대상이 되지않도록 주기적인 점검

 

④ 서비스 점검

- 불필요한 포트 혹은 서비스를 사용중인지 점검

 

⑤ 모니터링

- 평시 발생하는 트래픽을 인지하고, 이상 트래픽의 발생 유무 모니터링

 

- KISA DDoS 공격 대응 가이드 참고

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

1. DoS (Denial Of Service) 유형

공격명 설명
TCP SYN Flooding - 3-Way HandShaking의 Half-Open 연결이 가능한 것을 이용한 취약점
- 공격자는 대상 시스템에 출발지 IP를 위조해 무수한 SYN 패킷 전송
- 대상 시스템은 위조된 IP에 SYN/ACK 패킷을 전송하며, ACK 응답을 기다림
- 출발지 IP는 위조되어 정상적인 ACK 응답을 수신하지 못함
- 대상시스템은 ACK 응답을 기다리므로, 정상 서비스 제공이 불가해짐
SMURF Attack - 출발지 IP를 대상 시스템으로 위조 및 ICMP 패킷을 직접 브로드 캐스팅 주소(X.X.X.255)로 전송
- 해당 패킷을 수신한 시스템은 대상 시스템으로 ICMP 패킷 응답 
- 대상시스템은 ICMP 응답을 과다하게 수신하여, 정상 서비스 제공이 불가해짐
Land Attack - 출발지 IP와 목적지 IP를 동일하게 설정하여 전송
- 해당 요청을 처리하는 과정에서 부하 발생
Ping of Death - ping에 사용되는 ICMP 패킷의 크기를 정상 크기보다 크게 설정하여 전송하며, 해당 패킷은 네트워크를 거치면서(라우팅 되면서) 작은 조각으로 쪼개지면서 전송됨.
- 피해 시스템에서는 수신한 패킷을 재조립하는 과정에서 부하가 발생.
Tear Drop Attack - 패킷은 네트워크를 통해 전송되면서 단편화를 통해 분할되고, 수신지에서 재조립
- 패킷이 단편회 될 때 오프셋 값을 중복되도록 설정하는 등의 방식을 통해 수신지에서 재조립시 부하 유발
Bonk - 모든 패킷의 순서번호를 1로 설정하여 전송
Boink - 첫번째 패킷의 순서번호를 1, 두번째 패킷의 순서번호를 201, 세번째 패킷의 순서번호 1011 등 순서번호를 랜덤하게 전송

2. DDoS (Distributed Denial of Service) 유형

구분 공격명 설명
전통적인 공격 Trinoo - 많은 호스트로부터 UDP Flooding을 유발
TFN(Tribed Flood Network) - Trinoo의 발전된 형태
- UDP Flooding, ICMP Flooding, TCP SYN Flooding 가능
Stacheldraht - Trinoo + TFN (두 공격이 제공하는 기능 모두 가짐)
- 마스터와 에이전트 간 통신에 암호화 기능을 사용
TFN2K - TFN의 발전된 형태
- 통신에 특정 포트를 사용하지 않고, 암호화 통신
대역폭 공격 - UDP Flooding
- UDP 프로토콜 반사 공격
- ICMP Flooding
- 대량의 트래픽을 피해 시스템에 전송 하여 대역폭을 고갈 시킴
자원 소진 공격 - TCP SYN, ACK Flooding
- Smurf Attack
- 대량의 트래픽을 피해 시스템에 전송 하여 피해 시스템의 서비스 자원을 고갈 시킴
웹/DB 부하 공격 - GET Flooding
- Slowloris Attack
- RUDY Attack
- Slow read Attack
- 정상적인 세션을 맺은 후 과도한 요청을 보내어 서버에 부하를 유발 시킴

3. DRDoS (Distributed Reflection Denial of Service) 유형

공격명 설명
DNS Reflection Attack - 출발지 IP를 대상 시스템으로 위장하여, 다수의 DNS 서버에 ANY, TXT 레코드 요청.
- ANY 레코드 : 도메인에 대한 모든 레코드 질의 시 사용.
- TXT 레코드 : 도메인과 관련해 저장해야 할 임의의 문자를 나타냄.
- 두 레코드 모두 요청에 비해 응답이 크기 때문에 공격에 주로 사용됨.
NTP Reflection Attack - 출발지 IP를 대상 시스템으로 위장하여, 다수의 NTP 서버에 monlist 요청.
- monlist : 최근에 접속한 최대 600개의 호스트 정보를 요청

 

* 해당 방식 외에도 다양한 방식이 존재하며, 구분한 기준 역시 상대적인 것임.

1. DoS (Denial of Service)

- 정당한 사용자가 서비스를 사용하는 것을 방해하는 행위.

- 대상 시스템의 처리 범위를 초과하는 과도한 트래픽을 전송해 부하를 유발하여 정상 서비스를 제공하지 못하도록 함.

- 단일 공격자가 단일 시스템을 대상으로 공격 진행.

 

2. DDoS (Distributed Denial of Service)

- DoS와 마찬가지로 대상 시스템의 처리 범위를 초과하는 과도한 트래픽을 전송해 부하를 유발하여 정상 서비스를 제공하지 못하도록 함.

- 취약한 서버에 악성코드를 배포해 좀비 PC로 이루어진 봇넷을 형성한 후 공격.

- 다수의 분산 좀비 PC를 이용해 단일 시스템에 공격 진행.

[캡쳐 1] DDoS 공격 (https://jwprogramming.tistory.com/181)

구성 요소 설명
공격자, 봇 마스터 - 공격을 주도하는 공격자의 PC
- C&C 서버에 명령을 전달하는 역할
마스터, C&C 서버 - 공격자로부터 명령을 전달받음
- 다수의 에이전트 관리
핸들러 프로그램 - 마스터 시스템의 역할을 수행하는 프로그램
에이전트 - 악성코드에 감염된 시스템으로, 대상 시스템에 직접적인 공격 수행
- 봇, 좀비PC 등으로도 불리며, 이들이 형성한 네트워크를 봇넷이라 함
데몬 프로그램 - 에이전트 시스템 역할을 수행
표적 - 공격의 대상이되는 피해 시스템

3. DRDoS (Distributed Reflection Denial of Service)

- 대상 시스템의 처리 범위를 초과하는 과도한 트래픽을 전송해 부하를 유발하여 정상 서비스를 제공하지 못하도록 함.

- 악성코드를 배보하고 봇넷을 형성하는 등의 과정없이 프로토콜의 구조적 취약점을 이용한 공격.

- 해당 프로토콜의 구조적 취약점을 이용해 정상적인 서비스를 제공하는 시스템을 반사체로 이용해 공격 진행.

[캡쳐 2] DRDoS (https://infosec-ledger.tistory.com/24)

구성 요소 설명
공격자 - 공격을 주도하는 공격자의 PC
반사 서버 - 정상적인 서비스를 제공하나, 프로토콜 구조상 취약점으로 인해 공격에 악용되는 서버
피해자 - 공격의 대상이되는 피해 시스템
일반 DDoS와의 차이점 - 10~500배 이상 트래픽 증폭
  반사 서버의 양과 공격의 규모는 비례

- 공격 패킷이 전송되는 경로의 다양성
  공격이 직접적으로 공격대상으로 향하는 것이 아니라 네트워크에 연결된 무수한 반사 서버로 전송

- 반사 서버의 단계적 사용 및 확산
  반사 서버의 양과 공격의 규모는 비례

- 공격이 발생한 최초의 IP에 대해 역추적이 어려움.
  Src IP를 공격 대상 IP로 위조 및 수 많은 반사 서버를 경유하므로, 근원지 역추적이 거의 불가능

 

1. Directory Traversal이란?

- 상위 디렉터리로 이동가능한 문자 ../ 를 이용해 상위 디렉터리로 접근하여 파일을 검색/다운 등이 가능한 취약점.
- 접근 통제 및 검증, 서버 설정 미흡 등의 취약점으로 인해 중요 파일에 접근이 가능한 취약점.
- 해당 취약점을 이용해 공격자는 접근 불가한 디렉터리나 파일에 접근이 가능해짐.

2. bWAPP Directory Traversal

- 먼저 bWAPP 첫화면에서 식별되는 정보는 없다.

[캡쳐 1] 초기 화면

- URL의 page 매개변수에 디렉터리 이동문자인 ../를 이용해 상위 디렉터리로 이동
- 중요파일인 /etc/passwd 파일에 접근

[캡쳐 2] /etc/passwd 내용 노출

- ../을 다수 입력한 이유는 다음과 같다.
① 공격자는 현재 자신이 위치한 디렉터리의 정확한 위치를 알지못한다.
② 공격자는 최상위 디렉터리인 root 디렉터리로 이동 후 원하는 디렉터리 및 파일에 접근하는 것이 목표이다.
③ root 디렉터리는 최상위 디렉터리이며, root 디렉터리의 상위 디렉터리 역시 root 이다.
④ 즉, 현재의 정확한 위치를 모르기 때문에 ../를 다수 입력해 root 디렉터리로 이동하기 위함이다.

[캡쳐 3] https://rrhh234cm.tistory.com/170


- Bee-box에서 다음 명령을 통해 해당 페이지의 내용을 확인할 수 있다.
directory_traversal_1.php : 문제 페이지 내용 확인 가능
functions_external.php : 설정된 함수 확인 가능

[캡쳐 4] 해당 페이지 내용 확인

directory_traversal_1.php 내용

<중략>

    <?php

    if(isset($_GET["page"]))
    {

        $file = $_GET["page"];

        switch($_COOKIE["security_level"])
            {

            case "0" :            

                show_file($file);

                // Debugging
                // echo "<br />" . $_GET['page'];

                break;

            case "1" :         

                $directory_traversal_error = directory_traversal_check_1($file);

                if(!$directory_traversal_error)
                {

                    show_file($file);

                }

                else
                {

                    echo $directory_traversal_error;

                } 

                // Debugging
                // echo "<br />" . $_GET["page"];

                break;

            case "2" :

                $directory_traversal_error = directory_traversal_check_3($file);           

                if(!$directory_traversal_error)
                {

                    show_file($file);

                }

                else
                {

                    echo $directory_traversal_error;

                }

                // Debugging
                // echo "<br />" . $_GET["page"];

                break;

            default :           

                show_file($file);

                // Debugging
                // echo "<br />" . $_GET["page"];

                break;

        }

    }

    ?>
    
    <하략>

functions_external.php 내용

<중략>

function directory_traversal_check_1($data)
{

    // Not bulletproof
    
    $directory_traversal_error = "";  
    
    // Searches for special characters in the GET parameter
    if(strpos($data, "../") !== false ||
       strpos($data, "..\\") !== false ||
       strpos($data, "/..") !== false ||
       strpos($data, "\..") !== false)
            
    {

        $directory_traversal_error = "Directory Traversal detected!";
    
    }
    
    /*
    else
    {
    
        echo "Good path!";
    
    }     
     */
    
    return $directory_traversal_error;

}

function directory_traversal_check_2($data)
{

    // Not bulletproof
    
    $directory_traversal_error = "";  
    
    // Searches for special characters in the GET parameter
    if(strpos($data, "../") !== false ||
       strpos($data, "..\\") !== false ||
       strpos($data, "/..") !== false ||
       strpos($data, "\..") !== false ||
       strpos($data, ".") !== false)
            
    {

        $directory_traversal_error = "Directory Traversal detected!";
    
    }
    
    /*
    else
    {
    
        echo "Good path!";
    
    }     
     */
    
    return $directory_traversal_error;

}

function directory_traversal_check_3($user_path,$base_path = "")
{
    
    $directory_traversal_error = "";
    
    $real_base_path = realpath($base_path);

    // echo "base path: " . $base_path . " real base path: " . $real_base_path . "<br />";

    $real_user_path = realpath($user_path);

    // echo "user path: " . $user_path . " real user path: " . $real_user_path . "<br />";

    // int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
    // URL: http://php.net/manual/en/function.strpos.php
    if(strpos($real_user_path, $real_base_path) === false)
    {
    
        $directory_traversal_error = "<font color=\"red\">An error occurred, please try again.</font>";
    
    }

    /*
    else
    {
    
        echo "Good path!";
    
    }     
     */
    
    return $directory_traversal_error;

}

<하략>

3. 대응방안

- 보안장비 패턴(ex ../ 및 해당 문자열 인코딩 값) 등록 후 탐지 및 차단
- 입력값 검증 및 권한 검증 수행
- 해당 서버가 Apache일 경우 "conf/httpd.conf"에 모든 디렉토리 Options 지시자의 'Indexes'를 제거.

+ Recent posts