Resources
    How to Use Amazon Inspect ...
    28 September 22

    How to Use Amazon Inspector

    Posted byINE
    facebooktwitterlinkedin
    news-featured

    In our lab walkthrough series, we go through selected lab exercises on our INE Platform. Subscribe or sign up for a 7-day, risk-free trial with INE and access this lab and a robust library covering the latest in Cyber Security, Networking, Cloud, and Data Science!

    Purpose: 

    When we push a docker image on ECR, it is very possible that we have pushed an image with vulnerabilities that an attacker could exploit. As a result, having a service that can detect such vulnerabilities becomes vital. In this article, we will learn how to install a vulnerable component on an EC2 instance, pack it as a docker image, push it to ECR, and detect the vulnerability using the Amazon Inspector service.

    Technical difficulty:

    |   Novice   |   Beginner   |   Competent   |   Proficient   |   Expert


    What is Amazon Elastic Container Registry?

    Amazon Elastic Container Registry (Amazon ECR) is an AWS managed container image registry service that is secure, scalable, and reliable. Amazon ECR supports private repositories with resource-based permissions using AWS IAM.

    This is so that specified users or Amazon EC2 instances can access your container repositories and images. You can use your preferred CLI to push, pull, and manage Docker images, Open Container Initiative (OCI) images, and OCI compatible artifacts.


    What is Amazon Inspector service?

    Amazon Inspector is a vulnerability management service that scans your AWS workloads for vulnerabilities on a continuous basis. Amazon Inspector detects and scans Amazon EC2 instances and container images in Amazon Elastic Container Registry (Amazon ECR) for software vulnerabilities and unintended network exposure.

    Amazon Inspector1.png

    Amazon Inspector generates a finding when a software vulnerability or network issue is discovered. A finding describes the vulnerability, identifies the affected resource, rates the severity of the vulnerability, and offers remediation advice. Details of an account finding can be analyzed in a variety of ways using the Amazon Inspector console, or you can view and process your findings using other AWS services.

    Finding types in Amazon Inspector

    Amazon Inspector generates findings for the following AWS resources: Amazon EC2 instances, and container images residing in Amazon ECR repositories.

    Following are the finding types identified by Amazon Inspector:

    • Package vulnerability
    • Network reachability

    Package vulnerability findings identify software packages in your environment that are exposed to common vulnerabilities and exposures (CVEs). Attackers can use unpatched vulnerabilities to compromise data confidentiality, integrity, or availability, as well as gain access to other systems. The CVE system is a reference method for publicly known information security vulnerabilities and exposures.  Package vulnerability findings are generated for both Amazon EC2 instances and ECR container images.

    Network reachability findings indicate that there are allowed network paths to Amazon EC2 instances in your environment. These findings appear when your TCP and UDP ports are reachable from the VPC edges such as an internet gateway, a VPC peering connection, or a VPN through a virtual gateway. These findings highlight network configurations that may be overly permissive, such as mismanaged security groups, ACLs, or IGWs, or that may allow for potentially malicious access. Network reachability findings are generated only for Amazon EC2 resources.

    Now that we have covered all the key terms for the lab, let's carry out the experiment.

    Lab Scenario

    We have set up the below scenario in our INE labs for our students to practice. The screenshots have been taken from our online lab environment.

    Lab Link: Amazon Inspector

    Objective

    Install a vulnerable component in the Amazon EC2 instance and pack the vulnerable component on the container image residing in ECR and detect the vulnerability using the Amazon inspector.

    Solution

    Step 1: Click the lab link button to get access credentials. Login to the AWS account with these credentials.

    Amazon Inspector3.png

    Step 2: Search for inspector in the search bar and navigate to the Inspector dashboard.

    Amazon Inspector4.pngAmazon Inspector5.png


    Step 4: Enable the inspector by clicking the “Enable Inspector” button.

    Amazon Inspector6.png


    The Amazon Inspector dashboard provides a snapshot of aggregated statistics for your Amazon resources. These statistics include key metrics for resource coverage and active vulnerabilities. The dashboard also displays groups of aggregated findings data for your account, such as EC2 instances with most critical findings.

    The Environment coverage section provides statistics about the resources scanned by Amazon Inspector. In this section, you can see the count and percentage of Amazon EC2 instances and Amazon ECR images scanned by Amazon Inspector.

    Amazon Inspector7.png


    Now create an EC2 instance and install a vulnerable package.

    Step 5: Search for EC2 in the search bar and navigate to the EC2 dashboard.

    Amazon Inspector8.png

    Step 6: Click on the “Launch instance” option.

    Amazon Inspector9.png

    Step 7: Set name as “lab-instance” and choose “Amazon Linux” from Quick Start.

    Amazon Inspector10.png

    Step 8: In the key pair section, choose the option to proceed without a key pair.

    Amazon Inspector11.png


    Step 9: Now choose “Create security group” and allow SSH traffic.

    Amazon Inspector12.png


    Step 10: Click on the “Launch instance” button.

    Amazon Inspector13.png


    In order for Amazon Inspector to detect software vulnerabilities for an EC2 instance, the instance must be a managed instance in Amazon EC2 Systems Manager (SSM). An SSM managed instance has the SSM Agent installed and running, and has an attached IAM instance profile that allows SSM to manage the instance.

    Step 11: Click the instance id after the state turns “Running”.

    Amazon Inspector14.png

    Step 12: Select “Modify IAM role” from Security under the actions drop-down.

    Amazon Inspector15.png


    Step 13: Click on “Create new IAM role”.

    Amazon Inspector16.png


    Step 14: Click on “Create role”.

    Amazon Inspector17.png


    Step 15: Choose trusted entity type as “AWS service” and use case as “EC2”.

    Amazon Inspector18.png


    Step 16: Search “ssmfull” in policies search bar and select “AmazonSSMFullAccess” and click on “Next” button.

    AmazonSSMFullAccess policy is a user trust policy that grants full access to the Systems Manager API and documents.

    Amazon Inspector19.png


    Step 17: Set role name as “SSM_Full_Access”.

    Amazon Inspector20.png


    Step 18: Click on “Create role”.

    Amazon Inspector21.png


    Step 19: Navigate back to the EC2 instance and attach a role with the instance. Click on the refresh button.

    Amazon Inspector22.png


    Step 20: Select “SSM_Full_Access” and click on the “Update IAM role” button.

    Amazon Inspector23.png

    Successfully attached an IAM role with the instance.

    Amazon Inspector24.png

    Step 21: Now stop and start the instance to make the configuration to take effect. Click on “Stop” under the “Instance state”.

    Amazon Inspector25.png

    Click on “Stop” and confirm.

    Amazon Inspector26.png

    Successfully “Stopped” the instance.

    Amazon Inspector27.png

    Step 22: Click on “Start instance” under “Instance state”.

    Amazon Inspector28.png


    Successfully started the instance.

    Amazon Inspector29.png


    Step 23: Now, click on “Connect”.

    Amazon Inspector30.png


    Step 24: Select “Session Manager” and click on the “Connect” button.

    Note: If it shows any configuration issue, start and stop the instance again.

    Amazon Inspector31.png

    Step 25: Select bash shell and switch to root user and execute the following commands in the shell to install a vulnerable httpd package.

    Apache HTTP Server 2.4.53 and earlier may not send the X-Forwarded-* headers to the origin server based on client side connection header hop-by-hop mechanism. An unauthenticated attacker with network access to the data plane may exploit this vulnerability to bypass IP-based authentication on the origin server or application (CVE-2022-31813)

    Commands:

    bash

    sudo su

    yum -y update && yum -y install httpd-2.4.53

    Amazon Inspector32.png

    Successfully installed httpd package with version 2.4.53.

    Amazon Inspector33.png

    Now create an image repository and push a docker image.

    Step 26: Search for “Elastic container registry” in the search bar and navigate to the ECR dashboard.

    Amazon Inspector34.png

    Step 27: Click on “Get Started”.

    Amazon Inspector35.png


    Step 28: Set visibility as “Private” and repository name as “web-server”.

    Amazon Inspector36.png


    Step 29: Click on the “Create repository” button.

    Amazon Inspector37.png


    Step 30: Successfully created a private repository. Click on “web-server”.

    Amazon Inspector38.png

    There are no images available in the repository.

    Amazon Inspector39.png


    Step 31: Click on “View push commands”.

    Amazon Inspector40.png

    Follow these steps in the local machine to push the image to the created repository.

    Amazon Inspector41.png

    Step 32: Switch to root user.

    Command: sudo su

    Amazon Inspector42.png

    Step 33: Configure AWS CLI using the provided credentials.

    Command: aws configure

    Amazon Inspector43.png


    Step 34: Retrieve an authentication token and authenticate your Docker client to your registry.

    Command: aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 843926034173.dkr.ecr.us-west-2.amazonaws.com

    Amazon Inspector44.png

    Step 35: Create a new directory to setup a Dockerfile.

    Command: mkdir ecr

    Amazon Inspector45.png

    Step 36: Navigate to the “ecr” directory.

    Command: cd ecr

    Amazon Inspector46.png

    Step 37: Use nano to create a Dockerfile with the following code.

    Command: nano Dockerfile

    Amazon Inspector47.png

    Paste the following code into the file. This code will pack the vulnerable httpd package into an image after build.

    Dockerfile:

    FROM amazonlinux:latest

    USER root

    RUN yum -y update && yum -y install httpd-2.4.53

    Amazon Inspector48.png


    Step 38: Build your Docker image using the following command.

    Command: docker build -t web-server.

    Amazon Inspector49.png


    Step 39: Tag the image to push the image to the created repository.

    Command: docker tag web-server:latest 843926034173.dkr.ecr.us-west-2.amazonaws.com/web-server:latest

    Amazon Inspector50.png


    Step 40: Execute the following command to push this image to your newly created AWS repository.

    Command: docker push 843926034173.dkr.ecr.us-west-2.amazonaws.com/web-server:latest

    Amazon Inspector51.png

    Successfully pushed the created image.

    Amazon Inspector52.png

    Step 41: Navigate back to the Inspector dashboard and check out the environment coverage.

    Now we have one instance and one repository with 100% coverage.

    Amazon Inspector53.png

    Step 42: Click on “By vulnerability” under findings in the navigation pane.

    Amazon Inspector54.png

    Notice the vulnerability detected by the inspector. The following vulnerabilities are related to the httpd package that we have installed in the instance and repository.

    Amazon Inspector55.png

    Step 43: Click on “CVE-2022-31813” to get more information about the detected vulnerability.

    Amazon Inspector56.png

    Click on the title and check the finding details.

    Amazon Inspector57.png


    Click on “By instance” to get the vulnerability details from the instance.

    Amazon Inspector58.png


    Click on “By container image” to get the vulnerability details from the image.

    Amazon Inspector59.png

    Click on “All findings” to get all the vulnerability details.

    Amazon Inspector60.png


    Successfully enabled Amazon Inspector and detected the vulnerabilities from the instance and container image.

    References: 

    Conclusion

    Congratulations! We successfully Installed a vulnerable component in the Amazon EC2 instance and packed the vulnerable component on the container image residing in ECR and detected the vulnerability using the Amazon inspector.

    Try out Amazon Inspector hands-on in our lab! Subscribe or sign up for a 7-day, risk-free trial with INE to access this lab and a robust library covering the latest in Cyber Security, Networking, Cloud, and Data Science!

    © 2024 INE. All Rights Reserved. All logos, trademarks and registered trademarks are the property of their respective owners.
    instagram Logofacebook Logotwitter Logolinkedin Logoyoutube Logo