Privilege Escalation이란?
- 권한 상승을 의미
- 공격자가 높은 수준의 권한(관리자 권한)을 얻고자 함.
- 시스템이나 네트워크에서 얻고자함.
- 공격자가 시스템에 최초로 침입했을 때, 일반 사용자로 들어감.
- 시스템 약점, 잘못된 권한 설정된 것, 취약점을 이용해 공격
- elevated access
- 어드민보다 높은 시스템
- Persistence techniques이랑 겹치는게 좀 있음.
Techniques
- Abuse Elevation Control Mechanism\
- Access Token Manipulation
- Account Manipulation
- Boot or Logon Autostart Execution
- Boot or Logon Initialization Scripts
- Create or Modify System Process
- Domain or Tenant Policy Modification
- Escape to Host
- Event Triggered Execution
- Exploitation for Privilege Escalation
- Hijack Execution Flow
- Process Injection
- Scheduled Task/Job
- Valid Accounts (흔히 사용)
Exploitation for Privilege Escalation
- 공격자가 소프트웨어 취약점을 이용함. → 권한 상승을 위해
- 취약점은 거의 존재하기 때문.
- 공개되어있느냐, 취약한가의 차이
관련 과제2
과제의 진행 방식은 다음 이미지와 같다.
기본 설정
- 두 가상 머신을 다운 받아, 공격자와 같은 네트워크에 위치시킨채 동작시킨다.
→ ip 주소를 획득 가능.
획득할 수 있는 정보 획득하기
1 ) ip 주소 획득
- 공격자의 ip는 192.168.108.131/24
- ip주소가 나왔지만 둘 중 어느 것이 cju인지, goal인지 알 수 없다.
2) ssh 서버가 정말로 작동 중인지 확인
- nmap 옵션에 대한 설명은 nmap을 치면 알 수 있다.
-sS | 열려있는 모든 포트를 탐지한다. |
-p | 특정 포트를 지정해서 탐지한다. |
- 포트 확인
- 22번 포트를 제외하고는 열려있는 포트가 없어 보인다.
3 ) 상대 시스템의 정보를 알아내기
- 혹시 유용한 정보가 될 수도 있으니 알아본다.
- nc 이용
- netcat은 TCP 또는 UDP 프로토콜을 사용하여 네트워크 연결을 통해 데이터를 읽고 쓰는 명령줄 유틸리티
- 네트워크 연결을 디버그 및 모니터링, 열린 포트 검사.. 등의 작업 가능.
- telnet 이용
- 132번은 ssh 9.7, 133번은 ssh 8.8버전을 사용함을 알 수 있다.
- 각각의 버전에서 발견된 취약점이 있을 수도 있으니 검색해본다.
- openSsh 8.8이상에서 발견된 취약점이라고 한다.
- 똑같이 실행시켜본다.
- 하지만 취약하지 않는다고 나온다.. 취약하다고 했는데..
- 이 취약점은 이용할 수 없을 것 같다.
4 ) mac주소, 사용 운영체제 획득
- 유용한 정보가 될 수도 있으니 획득한다.
cju로의 침투 시도
- 어느것이 cju의 ip인지 모르기 때문에 일단 시도해본다.
i. 사회 공학적 방법 이용
평소 교수님이 많이 사용하시는 비밀번호를 생각해보고 시도해본다.
- ex) 1111, wooam..
- 접속 성공이다. 이래서 아는 사람을 조심해야하나보다.
- 일반 사용자로 접속이 성공했다.
ii. brute force 기법 이용
- 칼리에 있는 기본 비밀번호 리스트 경로 : /usr/share/wordlists/rockyou.txt.gz
- sudo hydra -l cju -P /usr/share/wordlists/rockyou.txt ssh://192.168.108.133
[메시지 해석] 주요 메시지와 해석은 다음과 같습니다:
|
- 너무 오래걸려서 진짜 비밀번호만 들어있는 리스트 만들어서 brute force 실행시켜줬다.
⇒ cju의 비밀번호를 획득했으니, 로그인을 시도해본다.
cju 시스템 탐색하기
- 기본적인 시스템을 탐색해준다.
- 운영버전에 따른 취약점이 있을지도 모르니, 탐색해준다.
[자세한 운영체제 정보]
- uname -a or cat /etc/*release*==> 찾아보니 해당 커널버전에서 발견된 보안 이슈가 있었다. (CVE-2024-1086)
[취약점 이용 CVE-2024-1086]
- 권한 상승 방식
수직적 권한 상승 | 일반 → root |
수평적 권한 상승 | 일반 → 일반 |
- nf_tables 구성 요소에서 로컬 권한 상승을 달성하는 데 악용될 수 있는 사용 후 무료 취약점이 발견.
- nft_verdict_init() 함수는 후크 평결 내에서 양수 값을 드롭 오류로 허용하여, NF_DROP이 NF_ACCEPT를 모방하는 드롭 오류로 발행될 때 nf_hook_slow() 함수가 더블 프리 취약점을 트리거하도록 유도.
- poc코드가 공개되어 있다고 한다. https://github.com/Notselwyn/CVE-2024-1086
자세한 방법( Privilege Escalation)
1. build
- 칼리에서 해당 파일을 다운 받아준다. (이때 칼리는 인터넷 접속이 되어야한다. )
|
2. 파일 전송
- cju 인터넷이 안되기 때문에 ftp와 같은 원격 접속 방법으로 파일을 전송해줘야 한다.
sudo scp -r ~/CVE-2024-1086 cju@192.168.108.133:/home/cju
- ssh 이용해서 파일을 전송하는 방법이다.
- scp (Secure Copy Protocol) 이용함.
- 명령어를 실행시킨 후, 파일이 잘 전송되었나 확인한다.
3. 실행 (./exploit)
- 해당 파일을 실행시켜주니 무언가 진행이 되었다. PoC코드를 공유한 깃허브 블로그처럼 확인을 해주었다.
- root가 되었음을 알 수 있다.
(+) 일반 사용자를 생성하고 root 권한 주기.
- 터미널 창을 실수로 닫거나, 재시작을 해야하는 경우 다시 위와 같은 과정을 반복해야한다. 귀찮으므로 root권한을 가진 상태에서 일반 사용자를 생성한 후 root 권한으로 만들어주었다.
cju 사용자 탐색
- 도움이 될 만한 정보가 있을지도 모르니 탐색해준다.
[사용자 디렉터리 탐색]
- 이러한 정보를 볼 수 있었다.
- ~/.ash_history는 내가 접속한 후 사용한 명령어가 들어있는 파일이다. 별 도움이 되지 않았다.
[사용자 계정 정보]
- cju의 정보
- 다른 계정 정보
→ 혹시 다른 계정에 로그인할 수 있지 않을까하고 시도해봤지만, 어림도 없다.
[SUID 바이너리 찾기]
- 잘못된 권한 설정 파일을 찾아본다.
- find / -type f -perm -4000 -print 2>/dev/null
- 취약점이 있다면 권한 상승을 노릴 수 있다.
- /bin/bbsuid라는 파일 권한이 이상하다고 한다. 이 파일이 취약한 파일일 수도 있으니, 파일에대해 탐색해본다.
[/bin/bbsuid] 파일 탐색
- 뭐하는 파일인지 모르겠다. alpine 리눅스에 자동으로 생성되는 파일 같다.
file /bin/bbsuid
- 어떤 파일인지 탐색
→ 안 나온다.
ldd /bin/bbsuid
- 해당 파일이 사용하는 라이브러리를 확인.
- /lib/ld-musl-x86_64.so.1 를 사용중이다.
- 라이브러리 문제는 없어보인다.
strings /bin/bbsuid
- 실행 가능한 바이너리 내의 문자 데이터를 검색하여 중요한 힌트를 찾을 수 있다.
→ 안된다.
/bin/bbusid --help or 실행시키기
- 실제로 실행했을 때 출력이 어떻게 나오는지도 확인해 볼 수 있습니다. 바이너리를 실행할 때 기본적인 정보나 도움말이 나올 수 있다.
→ 해당 명령어를 실행할 때 해당 바이너리가 필요한 심볼릭 링크를 설치해야 한다고 한다. 한번 해보자.
--> 하지만 어림도 없다. 안된다.
==> 해당 파일은 이용하기 어려워보인다.
Root로서 정보 탐색
- Lateral Movement (측면 이동)
- 공격자가 너의 환경으로 움직이려고 함.
- Remote Services
[ssh 로그 탐색해보기]
- 혹시 goal과 원격접속한 기록이 남아있을지도 모른다. 탐색해보자.
- 아무것도 볼 수 없다. 실패!
[ root 디렉토리의 숨겨진 파일 찾기]
- ls -a를 해보니 숨겨진 파일이 나왔다.
- .ash_history는 명령어를 사용한 흔적이다.
- 내용은 이러하다.
- goal머신의 계정명을 알아낸 것 같다.
- 혹시 비밀번호가 걸려있지 않을지도 모른다. 로그인해보자.
→ 안된다! 비밀번호가 역시나 걸려있다.
[ssh 키를 통한 로그인]
- 찾아보니 비밀번호를 모르더라도, 키를 알 수 있다면 로그인할 수 있다고 한다. 시도해보자.
- 다음과 같은 순서로 생성할 수 있다고 한다.
- ssh키는 /root/.ssh/에 저장되어 있다.
i. 키 생성
- 생성했다.
ii. 상대에게 복사, 배포
[방법]
- ssh-copy-id proxynova@192.168.108.132
- scp $HOME/.ssh/id_rsa.pub user@remote.server.com:id_rsa.pub
- 잘 복사가 되었다. 하지만, 그 후 작업을 계속하려면 상대 계정으로 로그인을 해야 진행되는 것 같다.
- 설마.. 새롭게 생성하지 않고 기존의 것을 이용하면 되었던 것일까?
여기까지 알아냈지만, 이 이상을 알지 못하겠다.
'보안 > 시스템 보안' 카테고리의 다른 글
주통기 기반 윈도우즈 서버 취약점 점검(W-01, W-02, W-04, W-06) (0) | 2024.12.15 |
---|---|
scanf 함수 사용으로 인한 버퍼 오버플로(BOF) 실습 (0) | 2024.11.08 |
Brute Force 기법 중 하나인 패스워드 크렉킹 실습(Password Cracking) (0) | 2024.09.24 |