AWS - Access Token & Secrets

contents

URL Services#

ServiceURL
s3https://{user_provided}.s3.amazonaws.com
cloudfronthttps://{random_id}.cloudfront.net
ec2https://ec2-{ip-seperated}.compute-1.amazonaws.com
eshttps://{user_provided}-{random_id}.{region}.es.amazonaws.com
elbhttp://{user_provided}-{random_id}.{region}.elb.amazonaws.com:80/443
elbv2https://{user_provided}-{random_id}.{region}.elb.amazonaws.com
rdsmysql://{user_provided}.{random_id}.{region}.rds.amazonaws.com:3306
rdspostgres://{user_provided}.{random_id}.{region}.rds.amazonaws.com:5432
route 53{user_provided}
execute-apihttps://{random_id}.execute-api.{region}.amazonaws.com/{user_provided}
cloudsearchhttps://doc-{user_provided}-{random_id}.{region}.cloudsearch.amazonaws.com
transfersftp://s-{random_id}.server.transfer.{region}.amazonaws.com
iotmqtt://{random_id}.iot.{region}.amazonaws.com:8883
iothttps://{random_id}.iot.{region}.amazonaws.com:8443
iothttps://{random_id}.iot.{region}.amazonaws.com:443
mqhttps://b-{random_id}-{1,2}.mq.{region}.amazonaws.com:8162
mqssl://b-{random_id}-{1,2}.mq.{region}.amazonaws.com:61617
kafkab-{1,2,3,4}.{user_provided}.{random_id}.c{1,2}.kafka.{region}.amazonaws.com
kafka{user_provided}.{random_id}.c{1,2}.kafka.useast-1.amazonaws.com
cloud9https://{random_id}.vfs.cloud9.{region}.amazonaws.com
mediastorehttps://{random_id}.data.mediastore.{region}.amazonaws.com
kinesisvideohttps://{random_id}.kinesisvideo.{region}.amazonaws.com
mediaconverthttps://{random_id}.mediaconvert.{region}.amazonaws.com
mediapackagehttps://{random_id}.mediapackage.{region}.amazonaws.com/in/v1/{random_id}/channel

Access Key ID & Secret#

IAM uses the following prefixes to indicate what type of resource each unique ID applies to. The first four characters are the prefix that depends on the type of the key.

PrefixResource type
ABIAAWS STS service bearer token
ACCAContext-specific credential
AGPAUser group
AIDAIAM user
AIPAAmazon EC2 instance profile
AKIAAccess key
ANPAManaged policy
ANVAVersion in a managed policy
APKAPublic key
AROARole
ASCACertificate
ASIATemporary (AWS STS) access key

The rest of the string is Base32 encoded and can be used to recover the account id.

import base64
import binascii

def AWSAccount_from_AWSKeyID(AWSKeyID):
    
    trimmed_AWSKeyID = AWSKeyID[4:] #remove KeyID prefix
    x = base64.b32decode(trimmed_AWSKeyID) #base32 decode
    y = x[0:6]
    
    z = int.from_bytes(y, byteorder='big', signed=False)
    mask = int.from_bytes(binascii.unhexlify(b'7fffffffff80'), byteorder='big', signed=False)
    
    e = (z & mask)>>7
    return (e)


print ("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56JQ7WML")))

Regions#

Gaining AWS Console Access via API Keys#

A utility to convert your AWS CLI credentials into AWS console access.

  • Using NetSPI/aws_consoler

    $> aws_consoler -v -a AKIA[REDACTED] -s [REDACTED]
    2020-03-13 19:44:57,800 [aws_consoler.cli] INFO: Validating arguments...
    2020-03-13 19:44:57,801 [aws_consoler.cli] INFO: Calling logic.
    2020-03-13 19:44:57,820 [aws_consoler.logic] INFO: Boto3 session established.
    2020-03-13 19:44:58,193 [aws_consoler.logic] WARNING: Creds still permanent, creating federated session.
    2020-03-13 19:44:58,698 [aws_consoler.logic] INFO: New federated session established.
    2020-03-13 19:44:59,153 [aws_consoler.logic] INFO: Session valid, attempting to federate as arn:aws:sts::123456789012:federated-user/aws_consoler.
    2020-03-13 19:44:59,668 [aws_consoler.logic] INFO: URL generated!
    https://signin.aws.amazon.com/federation?Action=login&Issuer=consoler.local&Destination=https%3A%2F%2Fconsole.aws.amazon.com%2Fconsole%2Fhome%3Fregion%3Dus-east-1&SigninToken=[REDACTED]
    

References#