GiitHub에 AWS 키를 올리면 뽑힌다는 거 진짜???해보자!
🤔 전언
보기 드문, AWS를 불법으로 이용당한 이야기
GiitHub에 이런 느낌을 주는 공용 창고를 만들다가 부주의로 권한이 없는 AWS 액세스 키와 비밀 액세스 키를 공개해 외부에서 사용하는 시간을 측정했다.
🎉 결실
진짜예요.매우 빠르다.git push부터 13분 동안 사용합니다.지프 집선기 무서워, 조심해!
아니오, 잘못된 제출을 방지하기 위해서awslabs/git-secrets를 꼭 사용하세요.사람은 실수를 할 수 있다.
이후 58분 동안 AWS 지원 부서에 연락해 GiitHub에서 탈퇴하겠다고 경고했다.뜻밖에도 악의적인 BOT뿐만 아니라 AWS 자신도 감시하는 눈빛을 가지고 있다는 새로운 발견!!
✋ 검증 프로그램
원본 파일 만들기
Cloudtrail이 활성화되면 인스턴스를 중지하기 위해 Lambda 함수를 적절하게 생성합니다.소스에 누르지 마세요. 절대 누르지 마세요. 이런 식으로 댓글을 달아보세요.
lambda_function.pyimport logging
import boto3
from boto3.session import Session
print('Loading function... ')
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# set your access key here, don't use my key!!
AWS_ACCESS_KEY = 'AKIAJTR62TDCMHIFOH3A'
# set your secret access key here, don't use my key!!
AWS_ACCESS_SECRET = '9Z/jzM0C+haty7f2hwroK9ADmw06wq/EcnMgrcEj'
# option
AWS_REGION = 'ap-northeast-1'
EC2_TARGET_NAME_TAG = 'StopTargetInstance'
def handler(event, context):
実際の処理はどうでもいいので割愛~、インスタンス停止とかするだけです
액세스할 수 없음 확인
Lambda 함수의 동작 확인 테스트 후 IAM 정책 취소를 확인하여 Lambda 함수에서 오류가 발생했습니다.무서워서 적절한 열쇠로 아무것도 할 수 없으니 CLI도 확인해야 한다.
S3 사용 불가
aws-cli$ aws s3 ls
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
$ aws s3 ls s3://s3-ap-northeast-1.amazo
naws.com/SOMEBUCKET/
An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
EC2 실례 일람표도 구할 수 없고, 응, 이 열쇠는 고믹스로 바뀌었어.
aws-cli$ aws ec2 describe-instances
An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.
$ aws ec2 run-instances --image-id ami-XXXXXXXX --security-group-ids sg-XXXXXXXX --count 1 --instance-type t2.nano --
key-name SOMEKEYPAIR --query 'Instances[0].InstanceId'
An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message: xxx
클라우드 트레일에도 데니 일지가 있다.
검색 조건: { $.errorCode = "AccessDenied" }
네.노출 게임 준비 다 됐습니다.
시간 다 됐어!그뿐이야..
git push를 계속하고 멍청해 보이는 README도 넣어봤어요.감지된 시간을 이해하기 쉽게 목표를 정하고 즐거운 시간에... Push!!!
그 지령이 틀렸어, 응, 인증이 통과되지 않았어...왜...어렴풋해...
saitota/AutomateStopEC2Instances
😱 결실
아이구!첫 타자는 푸시에서 13분 만에 도착한 캐나다!
IAM에 대한 액세스 키 생성이 작업에 실패했습니다.boto3을 사용하기 때문에 일련의 조작이 자동화될 것으로 추정됩니다.확실히 전 구역에서 발굴용 실례를 상한선까지 채우기 위해서는 신선도가 좋은 열쇠를 먼저 얻어 신속하게 구축해야 한다.
캐나다 여러분, 이 옷을 입으신 것을 축하합니다.이제 순위를 봅시다.
원본 파일 만들기
Cloudtrail이 활성화되면 인스턴스를 중지하기 위해 Lambda 함수를 적절하게 생성합니다.소스에 누르지 마세요. 절대 누르지 마세요. 이런 식으로 댓글을 달아보세요.
lambda_function.py
import logging
import boto3
from boto3.session import Session
print('Loading function... ')
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# set your access key here, don't use my key!!
AWS_ACCESS_KEY = 'AKIAJTR62TDCMHIFOH3A'
# set your secret access key here, don't use my key!!
AWS_ACCESS_SECRET = '9Z/jzM0C+haty7f2hwroK9ADmw06wq/EcnMgrcEj'
# option
AWS_REGION = 'ap-northeast-1'
EC2_TARGET_NAME_TAG = 'StopTargetInstance'
def handler(event, context):
実際の処理はどうでもいいので割愛~、インスタンス停止とかするだけです
액세스할 수 없음 확인
Lambda 함수의 동작 확인 테스트 후 IAM 정책 취소를 확인하여 Lambda 함수에서 오류가 발생했습니다.무서워서 적절한 열쇠로 아무것도 할 수 없으니 CLI도 확인해야 한다.
S3 사용 불가
aws-cli
$ aws s3 ls
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
$ aws s3 ls s3://s3-ap-northeast-1.amazo
naws.com/SOMEBUCKET/
An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
EC2 실례 일람표도 구할 수 없고, 응, 이 열쇠는 고믹스로 바뀌었어.aws-cli
$ aws ec2 describe-instances
An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.
$ aws ec2 run-instances --image-id ami-XXXXXXXX --security-group-ids sg-XXXXXXXX --count 1 --instance-type t2.nano --
key-name SOMEKEYPAIR --query 'Instances[0].InstanceId'
An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message: xxx
클라우드 트레일에도 데니 일지가 있다.검색 조건:
{ $.errorCode = "AccessDenied" }
네.노출 게임 준비 다 됐습니다.
시간 다 됐어!그뿐이야..
git push를 계속하고 멍청해 보이는 README도 넣어봤어요.감지된 시간을 이해하기 쉽게 목표를 정하고 즐거운 시간에... Push!!!
그 지령이 틀렸어, 응, 인증이 통과되지 않았어...왜...어렴풋해...
saitota/AutomateStopEC2Instances
😱 결실
아이구!첫 타자는 푸시에서 13분 만에 도착한 캐나다!
IAM에 대한 액세스 키 생성이 작업에 실패했습니다.boto3을 사용하기 때문에 일련의 조작이 자동화될 것으로 추정됩니다.확실히 전 구역에서 발굴용 실례를 상한선까지 채우기 위해서는 신선도가 좋은 열쇠를 먼저 얻어 신속하게 구축해야 한다.
캐나다 여러분, 이 옷을 입으신 것을 축하합니다.이제 순위를 봅시다.
뜻밖에도 지지표가 끊기고 우편물이 배달되었다.
AWSSupportCase
Dear AWS Customer,
Your AWS Account is compromised! Please review the following notice and take immediate action to secure your account.
(意訳)
あんたのキーペア GitHub に上がってんで!
はよ消して、IAM見直せ!
インスタンス知らないのあったら止めろ!はよやれ!
https://github.com/saitota/AutomateStopEC2Instances/ ~~~
ってことで一部機能制限したで!!
(以下対応するべきことががいっぱい書かれてる)
오, 이 아이는 창고도 잘 파악하고 있군!실제로 AWS도 GiitHub을 복제하고 있습니다!!완전 친절!!또 기능 제한을 가해 과도한 요금을 받지 않도록 통제한다.(GPU 실례 같은 건 하면 안 되나, 미확인) 아, AWS의 경우 함부로 캐면 현물 실례 가격과 관련돼 환불하면 그게 손해고 싫어하겠죠.자동화는 일상에서 흔히 일어나는 일이라고 추정할 수 있다.
📖 감상
AWS가 다소 감지된다고 해서 부정 사용을 막을 수도 없고, 평소 열쇠가 흘러나오지 않도록 하는 게 맞다, 귀찮은 냄새 나지 않게 사전 대책을 잘 세워보자.사람은 실수를 할 수 있다.
열쇠의 유출을 방지하는 데는 위awslabs/git-secrets가 가장 좋은 실천이다.이 밖에도 루트 계정을 사용하지 않고 원가 알림 설정, 트레일 설정, 람바다라면 열쇠 대신 캐릭터로 하는 등 다양한 대안이 있다.
아무것도 하지 않은 사람은 정리된 기사가 많으니 속공으로 확인해 주세요.
Reference
이 문제에 관하여(GiitHub에 AWS 키를 올리면 뽑힌다는 거 진짜???해보자!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/saitotak/items/813ac6c2057ac64d5fef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)