AWS - Lambda Persistence

HackTricks 지원하기

Lambda

자세한 정보는 다음을 확인하세요:

AWS - Lambda Enum

Lambda Layer Persistence

람다가 은밀하게 실행될 때 임의의 코드를 실행하기 위해 레이어를 도입/백도어하는 것이 가능합니다:

AWS - Lambda Layers Persistence

Lambda Extension Persistence

Lambda Layers를 악용하여 확장을 악용하고 람다에 지속적으로 존재할 수 있으며 요청을 훔치고 수정할 수도 있습니다.

AWS - Abusing Lambda Extensions

리소스 정책을 통한 접근

외부 계정에 대해 다양한 람다 작업(예: 호출 또는 코드 업데이트)에 대한 접근을 부여할 수 있습니다:

버전, 별칭 및 가중치

람다는 다양한 버전(각 버전마다 다른 코드)을 가질 수 있습니다. 그런 다음, 다양한 버전의 람다로 다양한 별칭을 생성하고 각 별칭에 대해 다른 가중치를 설정할 수 있습니다. 이렇게 하면 공격자는 백도어가 있는 버전 1정상 코드만 있는 버전 2를 생성하고 요청의 1%에서만 버전 1을 실행하여 은밀함을 유지할 수 있습니다.

버전 백도어 + API Gateway

  1. Lambda의 원본 코드를 복사합니다.

  2. 원본 코드를 백도어하는 새로운 버전을 생성합니다(또는 악성 코드만 포함). 해당 버전을 게시하고 $LATEST에 배포합니다.

  3. 람다와 관련된 API 게이트웨이를 호출하여 코드를 실행합니다.

  4. 원본 코드로 새로운 버전을 생성하고, 해당 버전을 $LATEST에 게시하고 배포합니다.

  5. 이렇게 하면 이전 버전에서 백도어 코드가 숨겨집니다.

  6. API Gateway로 이동하여 백도어가 있는 람다의 새로운 POST 메서드를 생성합니다: arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1

  7. 최종 :1의 arn은 함수의 버전을 나타냅니다(이 시나리오에서 버전 1은 백도어가 있는 것입니다).

  8. 생성된 POST 메서드를 선택하고 작업에서 **API 배포**를 선택합니다.

  9. 이제 POST를 통해 함수를 호출하면 백도어가 호출됩니다.

Cron/Event actuator

무언가가 발생하거나 시간이 경과할 때 람다 함수를 실행할 수 있다는 사실은 람다를 지속성을 얻고 탐지를 피하는 좋은 방법으로 만듭니다. 여기 AWS에서 은밀하게 존재하기 위해 람다를 생성하는 몇 가지 아이디어가 있습니다.

  • 새로운 사용자가 생성될 때마다 람다가 새로운 사용자 키를 생성하고 공격자에게 전송합니다.

  • 새로운 역할이 생성될 때마다 람다가 손상된 사용자에게 역할 수임 권한을 부여합니다.

  • 새로운 CloudTrail 로그가 생성될 때마다 삭제/변경합니다.

HackTricks 지원하기

Last updated