Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-ec2-

This commit is contained in:
Translator
2026-02-23 10:50:39 +00:00
parent 9447f80c0c
commit 316612311a

View File

@@ -4,7 +4,7 @@
## VPC & Networking
VPC가 무엇인지와 그 구성 요소에 대해 알아보세요:
VPC가 무엇인지와 그 구성요소에 대해 알아보세요:
{{#ref}}
aws-vpc-and-networking-basic-information.md
@@ -12,30 +12,30 @@ aws-vpc-and-networking-basic-information.md
## EC2
Amazon EC2는 **가상 서버**를 시작하는 데 사용됩니다. **보안** **네트워킹** 구성과 **저장소** 관리를 허용합니다. Amazon EC2의 유연성은 자원을 위아래로 확장할 수 있는 능력에서 분명히 드러나며, 이는 다양한 요구 변화나 인기 급증에 효과적으로 적응합니다. 이 기능은 정확한 트래픽 예측의 필요성을 줄여줍니다.
Amazon EC2는 **가상 서버**를 시작하는 데 사용됩니다. **보안**, **네트워킹** 구성과 **스토리지** 관리를 할 수 있습니다. Amazon EC2의 유연성은 리소스를 상하로 확장할 수 있는 능력에서 드러나며, 이는 요구사항 변화나 인기 급증에 효과적으로 대응할 수 있게 해줍니다. 이 기능은 정확한 트래픽 예측의 필요성을 줄여줍니다.
EC2에서 열거할 흥미로운 항목:
EC2에서 열거할 만한 항목:
- 가상 머신
- SSH 키
- 사용자 데이터
- 기존 EC2/AMI/스냅샷
- User Data
- 기존 EC2s/AMIs/Snapshots
- 네트워킹
- 네트워크
- 서브네트워크
- 공인 IP
- 서브
- 퍼블릭 IP
- 열린 포트
- AWS 외부의 다른 네트워크와의 통합 연결
### Instance Profiles
**EC2 인스턴스**에서 실행되는 애플리케이션에 권한을 부여하기 위해 **역할**을 사용하는 것은 약간의 추가 구성이 필요합니다. EC2 인스턴스에서 실행되는 애플리케이션은 가상화된 운영 체제에 의해 AWS로부터 추상화니다. 이러한 추가 분리로 인해 AWS 역할과 관련 권한을 EC2 인스턴스에 할당하고 이를 애플리케이션에서 사용할 수 있도록 하려면 추가 단계가 필요합니다.
**roles**를 사용해 **EC2 instances**에서 실행되는 애플리케이션에 권한을 부여하려면 약간의 추가 구성이 필요합니다. EC2 인스턴스에서 실행되는 애플리케이션은 가상화된 운영체제에 의해 AWS로부터 추상화되어 있습니다. 이러한 추가 분리 때문에 AWS role과 관련 권한을 EC2 인스턴스에 할당하 애플리케이션에서 사용 가능하게 하려면 추가 단계가 필요합니다.
이 추가 단계는 인스턴스에 연결된 [_**인스턴스 프로필**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)**생성**입니다. **인스턴스 프로필은 역할을 포함하며** 인스턴스에서 실행되는 애플리케이션에 역할의 임시 자격 증명을 제공할 수 있습니다. 이러한 임시 자격 증명은 애플리케이션의 API 호출에서 자원에 접근하 역할이 지정한 자원에만 접근을 제한하는 데 사용될 수 있습니다. **한 번에 하나의 역할만 EC2 인스턴스에 할당될 수 있으며**, 인스턴스의 모든 애플리케이션은 동일한 역할과 권한을 공유합니다.
이 추가 단계는 인스턴스에 연결된 **생성** [_**instance profile**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)입니다. 그 **instance profile은 role을 포함하며**, 인스턴스에서 실행되는 애플리케이션에 역할의 임시 자격증명을 제공할 수 있습니다. 이러한 임시 자격증명은 애플리케이션의 API 호출에서 리소스에 접근하거나 역할이 지정한 리소스에만 접근을 제한하는 데 사용될 수 있습니다. 참고로 **한 번에 하나의 role만 EC2 인스턴스에 할당될 수 있으며**, 인스턴스의 모든 애플리케이션은 동일한 역할과 권한을 공유합니다.
### Metadata Endpoint
AWS EC2 메타데이터는 런타임에 인스턴스에서 사용할 수 있는 Amazon Elastic Compute Cloud (EC2) 인스턴스에 한 정보입니다. 이 메타데이터는 인스턴스 ID, 실행 중인 가용 영역, 인스턴스 연결된 IAM 역할, 인스턴스의 호스트 이름과 같은 인스턴스에 대한 정보를 제공하는 데 사용됩니다.
AWS EC2 metadata는 런타임에 인스턴스에서 접근 가능한 Amazon Elastic Compute Cloud (EC2) 인스턴스에 한 정보입니다. 이 메타데이터는 인스턴스 ID, 인스턴스가 실행 중인 가용 영역(availability zone), 인스턴스 연결된 IAM role, 인스턴스의 호스트명 등 인스턴스에 대한 정보를 제공니다.
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
@@ -81,6 +81,9 @@ aws ec2 describe-addresses
# Get current output
aws ec2 get-console-output --instance-id [id]
# Get a JPG-format screenshot of a running instance
aws ec2 get-console-screenshot --instance [id]
# Get VPN customer gateways
aws ec2 describe-customer-gateways
aws ec2 describe-vpn-gateways
@@ -133,15 +136,15 @@ aws ec2 describe-vpc-peering-connections
../../aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum/README.md
{{#endref}}
### 권한 상승
### Privesc
다음 페이지에서 **EC2 권한을 악용하여 권한을 상승시키는 방법**을 확인할 수 있습니다:
다음 페이지에서 **abuse EC2 permissions to escalate privileges** 방법을 확인할 수 있습니다:
{{#ref}}
../../aws-privilege-escalation/aws-ec2-privesc/README.md
{{#endref}}
### 포스트 익스플로잇
### Post-Exploitation
{{#ref}}
../../aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/
@@ -149,17 +152,17 @@ aws ec2 describe-vpc-peering-connections
## EBS
Amazon **EBS** (Elastic Block Store) **스냅샷**은 기본적으로 AWS EBS 볼륨의 정적 **백업**입니다. 다시 말해, 특정 시점에 **EC2** 인스턴스에 연결된 **디스크**의 **복사본**입니다. EBS 스냅샷은 지역과 계정 간에 복사할 수 있으며, 로컬에서 다운로드하여 실행할 수도 있습니다.
Amazon **EBS** (Elastic Block Store) **snapshots** 기본적으로 EBS 볼륨의 정적 **백업**입니다. 다시 말해, 특정 시점에 **EC2** 인스턴스에 연결된 **디스크**의 **복사본**입니다. EBS snapshots는 리전과 계정 간에 복사하거나 심지어 다운로드하여 로컬에서 실행할 수도 있습니다.
스냅샷에는 **소스 코드나 API 키**와 같은 **민감한 정보**가 포함될 수 있으므로, 기회가 있다면 확인는 것이 좋습니다.
스냅샷에는 **source code or APi keys** 와 같은 **민감한 정보**가 포함될 수 있으므로, 가능하다면 확인해보는 것이 권장됩니다.
### AMI EBS의 차이
### Difference AMI & EBS
**AMI**는 **EC2 인스턴스를 시작하는 데 사용**되며, EC2 **스냅샷**은 **EBS 볼륨에 저장된 데이터를 백업하고 복구하는 데 사용**됩니다. EC2 스냅샷은 새로운 AMI를 생성하는 데 사용할 수 있지만, AMI와 동일하지 않으며, 애플리케이션을 실행하는 데 필요한 운영 체제, 애플리케이션 서버 또는 기타 소프트웨어에 대한 정보는 포함지 않습니다.
**AMI**는 **launch an EC2 instance** 하는 데 사용되는 반면, EC2 **Snapshot**은 EBS 볼륨에 저장된 데이터를 **backup and recover** 하는 데 사용됩니다. EC2 Snapshot으로 새 AMI를 만들 있지만, AMI와 동일한 것은 아니며 운영 체제, application server 또는 애플리케이션 실행에 필요한 다른 소프트웨어에 대한 정보는 포함지 않습니다.
### 권한 상승
### Privesc
다음 페이지에서 **EBS 권한을 악용하여 권한을 상승시키는 방법**을 확인할 수 있습니다:
다음 페이지에서 **abuse EBS permissions to escalate privileges** 방법을 확인할 수 있습니다:
{{#ref}}
../../aws-privilege-escalation/aws-ebs-privesc/README.md
@@ -167,11 +170,11 @@ Amazon **EBS** (Elastic Block Store) **스냅샷**은 기본적으로 AWS EBS
## SSM
**Amazon Simple Systems Manager (SSM)**은 EC2 인스턴스의 플로트를 원격으로 관리하여 관리 작업을 훨씬 쉽게 만들어 줍니다. 이러한 인스턴스는 **SSM Agent 서비스가 실행 중이어야 하며, 이 서비스가 AWS API에서 작업을 수행하고 실행하는 역할을 합니다**.
**Amazon Simple Systems Manager (SSM)** EC2 인스턴스 집단을 원격으로 관리하여 관리 작업을 훨씬 쉽게 니다. 이러한 인스턴스는 **SSM Agent service as the service will be the one getting the actions and performing them** 가 실행 중이어야 합니다. 해당 서비스가 AWS API로부터 작업을 받아 이를 수행하기 때문입니다.
**SSM Agent**는 Systems Manager가 이러한 리소스를 업데이트, 관리 및 구성할 수 있도록 합니다. 에이전트는 **AWS Cloud의 Systems Manager 서비스로부터 요청을 처리**하고, 요청에 지정된 대로 실행합니다.
**SSM Agent** 는 Systems Manager가 이러한 리소스를 업데이트, 관리 및 구성할 수 있 합니다. 에이전트는 **processes requests from the Systems Manager service in the AWS Cloud** 하고, 요청에 지정된 대로 이를 실행합니다.
**SSM Agent**[ **일부 AMI에 사전 설치되어 있습니다**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) 또는 인스턴스에 [**수동으로 설치해야 합니다**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html). 또한, 인스턴스 내에서 사용되는 IAM 역할은 통신할 수 있도록 **AmazonEC2RoleforSSM** 정책이 연결되어 있어야 합니다.
The **SSM Agent comes**[ **preinstalled in some AMIs**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) or you need to [**manually install them**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) on the instances. 또한, 인스턴스 내에서 사용되는 IAM Role에는 통신을 위해 **AmazonEC2RoleforSSM** 정책이 연결되어 있어야 합니다.
### 열거
```bash
@@ -182,13 +185,13 @@ aws ssm describe-instance-patches --instance-id <id>
aws ssm describe-instance-patch-states --instance-ids <id>
aws ssm describe-instance-associations-status --instance-id <id>
```
EC2 인스턴스에서 Systems Manager가 실행 중인지 확인하려면 다음을 실행하면 됩니다:
다음 명령을 실행하면 EC2 인스턴스에서 Systems Manager가 실행 중인지 확인할 수 있습니다:
```bash
ps aux | grep amazon-ssm
```
### Privesc
다음 페이지에서 **SSM 권한을 악용하여 권한 상승**하는 방법을 확인할 수 있습니다:
다음 페이지에서 **abuse SSM permissions to escalate privileges** 방법을 확인할 수 있습니다:
{{#ref}}
../../aws-privilege-escalation/aws-ssm-privesc/README.md
@@ -196,7 +199,7 @@ ps aux | grep amazon-ssm
### Perssistence
다음 페이지에서 **SSM 권한을 악용하여 지속성**을 달성하는 방법을 확인할 수 있습니다:
다음 페이지에서 **abuse SSM permissions to achieve persistence** 방법을 확인할 수 있습니다:
{{#ref}}
../../aws-persistence/aws-ssm-persistence/README.md
@@ -204,7 +207,7 @@ ps aux | grep amazon-ssm
## ELB
**Elastic Load Balancing** (ELB) **Amazon Web Services** (AWS) 배포를 위한 **로드 밸런싱 서비스**입니다. ELB는 자동으로 **들어오는 애플리케이션 트래픽을 분산**하고 트래픽 수요를 충족하기 위해 리소스를 확장합니다.
**Elastic Load Balancing** (ELB) **load-balancing service for Amazon Web Services** (AWS) 배포 서비스입니다. ELB는 수신되는 애플리케이션 트래픽을 자동으로 분산시키고 트래픽 수요를 충족하기 위해 리소스를 확장합니다.
### Enumeration
```bash
@@ -217,7 +220,7 @@ aws elbv2 describe-load-balancers
aws elbv2 describe-load-balancers | jq '.LoadBalancers[].DNSName'
aws elbv2 describe-listeners --load-balancer-arn <load_balancer_arn>
```
## 런치 템플릿 및 오토스케일링 그룹
## Launch Templates & Autoscaling Groups
### 열거
```bash
@@ -236,9 +239,9 @@ aws autoscaling describe-load-balancers
```
## Nitro
AWS Nitro는 AWS EC2 인스턴스의 기 플랫폼을 형성하는 **혁신적인 기술** 모음입니다. Amazon에 의해 **보안, 성능 및 신뢰성**을 향상시키기 위해 도입된 Nitro는 맞춤형 **하드웨어 구성 요소와 경량 하이퍼바이저**를 활용합니다. 전통적인 가상화 기능의 많은 부분을 전용 하드웨어와 소프트웨어로 추상화하여 **공격 표면을 최소화**하고 자원 효율을 개선합니다. 가상화 기능을 오프로드함으로써 Nitro는 EC2 인스턴스가 **거의 베어 메탈 성능**을 제공할 수 있게 하여 자원 집약적 애플리케이션에 특히 유리합니다. 또한, Nitro 보안 칩은 **하드웨어 펌웨어의 보안**을 보장하여 그 강력한 아키텍처를 더욱 강화합니다.
AWS Nitro는 AWS EC2 인스턴스의 기 플랫폼을 형성하는 **혁신적인 기술 모음**입니다. Amazon이 도입하여 **보안, 성능 및 신뢰성 향상**을 위해, Nitro는 맞춤형 **하드웨어 구성 요소와 경량 하이퍼바이저**를 활용합니다. 전통적인 가상화 기능의 상당 부분을 전용 하드웨어와 소프트웨어로 추상화하여, **공격 표면을 최소화**하고 리소스 효율을 개선합니다. 가상화 기능을 오프로드함으로써 Nitro는 EC2 인스턴스가 **거의 베어메탈에 가까운 성능**을 제공하도록 하여 리소스 집약적 애플리케이션에 특히 유리합니다. 또한 Nitro Security Chip은 하드웨어 펌웨어의 **보안**을 특별히 보장하여 그 견고한 아키텍처를 더욱 공고히 합니다.
자세한 정보와 이를 열거하는 방법은 다음에서 확인할 수 있습니다:
Get more information and how to enumerate it from:
{{#ref}}
aws-nitro-enum.md
@@ -246,34 +249,34 @@ aws-nitro-enum.md
## VPN
VPN은 **AWS VPC**와 **온프레미스 네트워크(사이트 간 VPN)** 또는 **작업자 노트북(클라이언트 VPN)**을 연결하여 서비스 인터넷에 노출하지 않고도 접근할 수 있게 니다.
VPN은 귀사의 **온프레미스 네트워크 (site-to-site VPN)** 또는 **작업자 노트북 (Client VPN)**을 **AWS VPC**에 연결하여 서비스들을 인터넷에 노출할 필요 없이 접근할 수 있게 해줍니다.
#### 기본 AWS VPN 구성 요소
#### Basic AWS VPN Components
1. **고객 게이트웨이**:
- 고객 게이트웨이는 VPN 연결의 귀하 측을 나타내기 위해 AWS에서 생성하는 리소스입니다.
- 본질적으로 사이트 간 VPN 연결의 귀하 측에 있는 물리적 장치 또는 소프트웨어 애플리케이션입니다.
- 고객 게이트웨이를 생성하기 위해 AWS에 라우팅 정보와 네트워크 장치(예: 라우터 또는 방화벽)의 공용 IP 주소를 제공합니다.
- VPN 연결 설정을 위한 참조 지점 역할을 하며 추가 요금이 발생하지 않습니다.
2. **가상 사설 게이트웨이**:
- 가상 사설 게이트웨이(VPG)는 사이트 간 VPN 연결의 Amazon 측 VPN 집중기입니다.
- 귀하의 VPC에 연결되어 있으며 VPN 연결의 대상 역할을 합니다.
- VPG는 VPN 연결의 AWS 측 엔드포인트입니다.
- 귀하의 VPC와 온프레미스 네트워크 간의 안전한 통신을 처리합니다.
3. **사이트 간 VPN 연결**:
- 사이트 간 VPN 연결은 귀하의 온프레미스 네트워크를 안전한 IPsec VPN 터널을 통해 VPC에 연결합니다.
- 이 유형의 연결은 고객 게이트웨이와 가상 사설 게이트웨이가 필요합니다.
- 데이터 센터 또는 네트워크와 AWS 환경 간의 안전하고 안정적이며 일관된 통신을 위해 사용됩니다.
- 일반적으로 정기적이고 장기적인 연결에 사용되며 연결을 통해 전송된 데이터 양에 따라 요금이 청구됩니다.
4. **클라이언트 VPN 엔드포인트**:
- 클라이언트 VPN 엔드포인트는 클라이언트 VPN 세션을 활성화하고 관리하기 위해 AWS에서 생성하는 리소스입니다.
- 개별 장치(노트북, 스마트폰 등)가 AWS 리소스 또는 온프레미스 네트워크에 안전하게 연결할 수 있도록 허용하는 데 사용됩니다.
- 전체 네트워크를 연결하는 것이 아니라 개별 클라이언트를 위해 설계되었다는 점에서 사이트 간 VPN과 다릅니다.
- 클라이언트 VPN을 사용하면 각 클라이언트 장치가 VPN 클라이언트 소프트웨어를 사용하여 안전한 연결을 설정합니다.
1. **Customer Gateway**:
- A Customer Gateway is a resource that you create in AWS to represent your side of a VPN connection.
- It is essentially a physical device or software application on your side of the Site-to-Site VPN connection.
- You provide routing information and the public IP address of your network device (such as a router or a firewall) to AWS to create a Customer Gateway.
- It serves as a reference point for setting up the VPN connection and doesn't incur additional charges.
2. **Virtual Private Gateway**:
- A Virtual Private Gateway (VPG) is the VPN concentrator on the Amazon side of the Site-to-Site VPN connection.
- It is attached to your VPC and serves as the target for your VPN connection.
- VPG is the AWS side endpoint for the VPN connection.
- It handles the secure communication between your VPC and your on-premises network.
3. **Site-to-Site VPN Connection**:
- A Site-to-Site VPN connection connects your on-premises network to a VPC through a secure, IPsec VPN tunnel.
- This type of connection requires a Customer Gateway and a Virtual Private Gateway.
- It's used for secure, stable, and consistent communication between your data center or network and your AWS environment.
- Typically used for regular, long-term connections and is billed based on the amount of data transferred over the connection.
4. **Client VPN Endpoint**:
- A Client VPN endpoint is a resource that you create in AWS to enable and manage client VPN sessions.
- It is used for allowing individual devices (like laptops, smartphones, etc.) to securely connect to AWS resources or your on-premises network.
- It differs from Site-to-Site VPN in that it is designed for individual clients rather than connecting entire networks.
- With Client VPN, each client device uses a VPN client software to establish a secure connection.
여기에서 [**AWS VPN의 이점과 구성 요소에 대한 더 많은 정보를 찾을 수 있습니다**](aws-vpc-and-networking-basic-information.md#vpn).
You can [**find more information about the benefits and components of AWS VPNs here**](aws-vpc-and-networking-basic-information.md#vpn).
### Enumeration
### 열거
```bash
# VPN endpoints
## Check used subnetwork, authentication, SGs, connected...
@@ -297,25 +300,25 @@ aws ec2 describe-vpn-gateways
# Get VPN site-to-site connections
aws ec2 describe-vpn-connections
```
### 로컬 열거
### Local Enumeration
**로컬 임시 자격 증명**
**Local Temporary Credentials**
AWS VPN 클라이언트를 사용하여 VPN에 연결 때, 사용자는 일반적으로 **AWS에 로그인**하여 VPN에 접근합니다. 그런 다음, VPN 연결을 설정하기 위해 일부 **AWS 자격 증명이 생성되어 로컬에 저장됩니다**. 이 자격 증명은 **`$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt`**에 저장되며, **AccessKey**, **SecretKey** **Token**을 포함합니다.
AWS VPN Client가 VPN에 연결 때, 사용자는 일반적으로 VPN에 접근하기 위해 **AWS에 로그인**합니다. 그, VPN 연결을 설정하기 위해 일부 **AWS credentials가 생성되어 로컬에 저장**됩니다. 해당 자격증명은 **`$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt`에 저장**되며 **AccessKey**, **SecretKey**, **Token**을 포함합니다.
자격 증명은 사용자 `arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials`에 속합니다 (TODO: 이 자격 증명의 권한에 대해 조사하기).
해당 자격증명은 사용자 `arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials`에 속합니다 (TODO: 이 자격증명의 권한에 대해 추가 조사 필요).
**opvn 구성 파일**
**opvn config files**
**VPN 연결이 설정되었다면**, 시스템에서 **`.opvn`** 구성 파일을 검색해야 합니다. 또한, **구성**을 찾을 수 있는 한 곳은 **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**입니다.
VPN 연결이 수립된 경우 시스템에서 **`.opvn`** 구성 파일을 찾아보세요. 또한 구성 파일을 찾을 수 있는 위치 중 하나는 **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**입니다.
#### **포스트 익스플로잇**
#### **Post Exploitaiton**
{{#ref}}
../../aws-post-exploitation/aws-vpn-post-exploitation/README.md
{{#endref}}
## 참조
## References
- [https://docs.aws.amazon.com/batch/latest/userguide/getting-started-ec2.html](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-ec2.html)