전체 글

워터링 홀 공격 및 시나리오 워터링 홀 공격이란 공격대상이 방문할 가능성이 있는 합법적 웹사이트에 미리 악성코드를 심어 놓은 뒤 잠복하면서 피해자의 컴퓨터에 악성코드를 추가로 설치하는 공격을 말합니다. 마치 사자가 먹이를 습격하기 위해 물웅덩이(Watering Hole) 근처에서 매복하고 있는 형상을 빗댄 것으로, 표적 공격(APT 공격)의 일종이라고 볼 수 있습니다. 워터링 홀은 사전에 공격 대상에 대한 정보를 수집한 후 주로 방문하는 웹사이트를 파악, 해당 사이트의 제로데이(Zero-Day) 등을 악용해 접속하는 모든 사용자에게 악성 코드를 뿌리기 때문에 사용자가 특정 웹사이트에 접속만 하여도 악성코드에 감염됩니다. 공격 시나리오는 다음과 같습니다. 웹서버의 SSTI 취약점을 활용하여 페이지가 변조되..
공격 시나리오 공격 시나리오는 다음과 같습니다. User01가 Mail 서버에서 악성 코드가 내재된 메일을 전달 받고, 악성 코드의 리버스 쉘이 실행되면서 C2 서버와 연결이 설정됩니다. 이를 통해 C2 서버는 Eternalblue 공격을 통해 내부 침투를 수행합니다. ※ Eternalblue 공격 패턴 특징: '00 00 00 00 00 00 00 10' 값을 전송 실습 수행 1. 악성 프로세스 종료 및 파일 삭제 User01의 가상환경의 브라우저에 mail.co.kr로 접속하여 메일을 확인합니다. 메일에 포함된 실행 파일이 실행되고 있는지 확인하기 위해 윈도우의 [작업 관리자] → [세부 정보]에 update.exe 파일이 실행되고 있는지 확인합니다. PID가 4484인 update.exe 파일이 실..
업무망 방화벽 정책 설정 시나리오 기준, 업무망에서 외부 혹은 DMZ로 접근 시에는 모두 가능입니다. 방화벽 정책 추가 업무망은 출발지가 네트워크 망 상에 192.168.42.0/24 대역이므로 출발지 설정에 앞서 인터페이스 객체를 만드는 것처럼 망 또한 객체를 만들어줍니다. 그리고, 시나리오에 맞게 목적지를 설정합니다. 업무 → 외부, DMZ는 모두 이므로 다음과 같이 설정할 수 있습니다. NAT 정책 추가 외부와 통신할 때는 사설 IP(업무망, 192.168.42.0/24)가 아닌 공인 IP(13.124.137.1)로 접속할 수 있도록 정책을 설정해야합니다. 여기서 중요한 것은 정책 설정 순서입니다. 정책은 순차적으로 적용되기 때문에 방금 추가한 NAT 정책은 최하위로 이동해야합니다.
UTM에서 IPS 차단 기능을 사용하도록 설정 [IPS/DDoS] → [보호 도메인 정책]에서 보호 도메인 정책을 추가합니다. 적용 후 [IPS/DDoS] → [일반 설정]→ [동작 모드]에서 차단 모드로 변경합니다. WAF에서 웹 서버에 대한 공격을 차단하도록 설정 최종적으로 외부 PC의 브라우저에서 www.kisa.or로 접근했을 때의 프로세스는 다음과 같습니다. ① kisa.or.kr로 접속하면 UTM에서 NAT 설정을 통해 WAF로 보낸다. ② WAF는 받은 연결을 192.168.0.200으로 보낸다. 우선은 WAF가 웹 서버 쪽으로 접속이 가능하도록 설정해야합니다. 그럼 AdminConsole에서 WAF로 접속하도록 설정합니다. [Firewall] → [방화벽] → [방화벽 정책 설정]에서 방화..
인프라 구축 시나리오 제시된 인프라를 구성하기 위한 UTM, WAF 설정 및 정책을 적용하는 실습을 진행합니다. 먼저 AdminConsole에서 UTM만 접근 가능한 상태이므로, UTM에 접근해서 다음 인터페이스들을 세팅해주어야하며, 세팅 이후 라우팅도 해야 하고, 망 별로 접근 권한을 위해 방화벽 정책 그리고 NAT 설정까지 해야 합니다. 인터페이스 설정 관리자 가상환경인 AdminConsole의 SECUI MF2라는 UTM 프로그램을 실행한 후 [System] → [시스템 구성] → [인터페이스 설정]으로 이동합니다. 그리고, 조건에 맞게 eth0, eth1, eth2, eth3 인터페이스를 설정합니다. 이제 시스템 점검 도구를 통해 세팅이 잘 되어 있는지 확인합니다. [System] → [시스템 구..
Command Injection 개념과 실습 Command Injection 공격은 사용자 입력 값이 운영체제 명령어의 일부 또는 전부로 구성되어 실행되는 경우, 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 악영향을 미치는 공격입니다. 일반적으로 명령어 라인의 파라미터나 스트림 입력 등 외부 입력을 사용하여 시스템 명령어를 생성하는 프로그램에서 발생합니다. 윈도우의 &나 리눅스의 ; 특수문자는 명령어를 이어서 실행하게 한다. 즉, 원래는 특수문자 이전까지의 filename을 실행하는 것이지만 특수문자까지 합쳐져서 그 이후도 실행하게한다. Command Injection의 동작 방식에 이해를 위해 실습 시스템에서 웹 서버에 먼저 접속합니다. 해당 터미널에서 c..
SQL Injection 개념과 실습 데이터베이스(DB)와 연동된 응용 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않는 경우, 공격자가 입력 데이터에 SQL 쿼리문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 취약점입니다. 앞서 미니 로그인 서버와 DB를 실제로 생성하여 SQL Injection 실습을 진행했었습니다. 이번에는 WAF(웹 방화벽)을 통해 SQL Injection을 차단하는 실습을 진행해보고자 합니다. https://younngjun.tistory.com/63 SQL Injection 실습 실습 환경 구축 이번 SQL Injection 실습에서는 이전 포스팅에서 구축한 서버를 바탕으로 실습이 진행됩니다! https://younngjun.tistory.com/62 리눅스..
큐? 큐는 선입 선출구조로, 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입 선출구조입니다. 큐에 데이터를 추가하는 작업을 enqueue, 데이터를 꺼내는 작업을 dequeue, 데이터를 꺼내는 쪽을 front, 데이터를 넣는 쪽을 rear라고 합니다. 배열로 큐 구현하기 1. enqueue 데이터 x를 enqueue하려면 배열 que의 마지막 원소의 인덱스인 idx의 다음 인덱스인 idx + 1에 추가합니다. que[idx + 1] = x 이때 처리의 복잡도는 O(1)이고, 비교적 적은 비용으로 구현할 수 있습니다. 2. dequeue 데이터 y를 dequeue하려면 배열 que의 0번째 원소를 꺼내고, 이후의 원소들을 앞쪽으로 옮겨야 합니다. 이때의 처리 복잡도는 O(n)으로, 데이터를 꺼낼 때마다 ..
HFS(HTTP File System) rejetto 공격이란? HFS에서 %00 처리 미흡으로 인해 /search=%00{.exec|cmd.} 와 같이 원격으로 cmd 명령이 실행되는 취약점이 발견되었습니다. HFS rejetto 공격 실습 1. 파일 서버 공격자에 의해 원격 명령이 실행될 파일 서버입니다. 2. 공격자 공격자의 웹 브라우저를 통해 HFS rejetto 공격을 수행합니다. 공격자의 웹 브라우저를 통해 파일 서버로 이동합니다. 앞서 설명하였듯 HFS rejetto 공격은 HFS에서 %00 처리 미흡으로 인해 /search=%00{.exec|cmd.} 명령으로 원격에서 파일 서버에 cmd 명령을 실행하는 공격입니다. 그러므로, 파일 서버의 search에 파일 서버에 원격에서 계산기를 실행하..
스택이란? 데이터를 임시 저장할 때 사용하는 자료구조로, 데이터의 입력과 출력 순서는 후입선출(LIFO) 방식입니다. PUSH로 데이터를 스택에 넣고, POP을 통해 데이터를 스택에서 꺼냅니다. 스택 구현하기 1. 스택 초기화 스택 배열 stk는 푸시한 데이터를 저장하는 스택 본체인 리스트형 배열입니다. 인덱스가 0인 원소를 스택의 바닥이라고 하며, 데이터가 스택에 추가되는 PUSH 작업이 수행되면 stk[0]에 저장됩니다. 그렇다면 고정 길이의 스택 stk 배열을 구현할 때 어떤 인자를 전달해야할까요? 바로 스택의 최대 크기를 나타내는 capacity와 현재 스택에 쌓여 있는 데이터의 개수를 나타내는 stack pointer입니다. 그렇다면 고정길이 스택 클래스인 FixedStack의 init 메서드를..
Younngjun
오늘의 공부