
एक स्वचालित क्लाउड सुरक्षा ऑडिटिंग उपकरण जो Tencent Cloud और AWS के लिए विसंगति पहचान, ब्लैकलिस्ट नियमों और बेसलाइन विश्लेषण का उपयोग करके क्लाउड प्लेटफ़ॉर्म लॉग का समय-समय पर ऑडिट करके AK/SK क्रेडेंशियल दुरुपयोग का पता लगाता है।
cloud-audit (क्लाउड सुरक्षा ऑडिट सहायक) एक उपकरण है जो सार्वजनिक क्लाउड प्रदाताओं के AK/SK लीक के दुरुपयोग का पता लगाता है। नियमित रूप से क्लाउड प्लेटफ़ॉर्म इंटरफ़ेस को कॉल करके लॉग का ऑडिट करता है, और असामान्य व्यवहार/ब्लैक फीचर्स/बेसलाइन के आधार पर संदिग्ध घुसपैठ की गतिविधियों का पता लगाता है।
वर्तमान में केवल Tencent Cloud और AWS समर्थित है।
चरण 1: निर्भरताएँ स्थापित करने के लिए कमांड चलाएँ
cd /opt/ && git clone https://github.com/al0ne/cloud-audit
cd cloud-audit && pip3 install -r requirements.txt
चरण 2: .env कॉन्फ़िगरेशन बनाएँ और संशोधित करें
cp .env.example .env
अपनी वास्तविक कॉन्फ़िगरेशन के अनुसार .env फ़ाइल में भरें
# 腾讯云的AK/SK信息,需要使用AK/SK来调用API接口获取日志
TencentAccessKey="xxx"
TencentSecretKey="xxx"
# 腾讯云要监控的AK/SK列表
AccesskeyList="xxx,xxx,xxx"
# AWS的AK/SK信息
AWS_ACCESS_KEY_ID="xxx"
AWS_SECRET_ACCESS_KEY="xxx"
# Discord 通知信息
discord_webhook_url=""
# 企业微信机器人通知
weixin_webhook_url=""
चरण 3: प्रोग्राम के महत्वपूर्ण कॉन्फ़िगरेशन
# 可信的网段,非可信网段调用敏感操作直接告警。
while_cidr = ["192.168.0.0/16", "172.16.0.0/12", "10.0.0.0/8"]
# AWS要关注的地域,非该地域的事件将不查询
aws_region = [
"us-east-1",
"us-east-2",
"ap-northeast-1",
"ap-southeast-1"
]
चलाएँ
python3 cloud-audit.py
प्रोग्राम हर 15 मिनट में एक बार खोज परिणाम निष्पादित करता है।
चूँकि AWS लॉग AWS CloudTrail सेवा का उपयोग करके पढ़े और ऑडिट किए जाते हैं, कृपया सुनिश्चित करें कि आपके खाते में AWSCloudTrail_ReadOnlyAccess IAM अनुमति है, अन्यथा निम्न त्रुटि संदेश दिखाई देगा।
botocore.exceptions.ClientError: An error occurred (AccessDeniedException) when calling the LookupEvents operation: User: arn:aws:iam::xxxxx:user/test is not authorized to perform: cloudtrail:LookupEvents because no identity-based policy allows the cloudtrail:LookupEvents action
AWS IAM प्लेटफ़ॉर्म पर जाएँ, उपयोगकर्ता चुनें -> अनुमति अनुभाग में अनुमति जोड़ें।
जब क्लाउड प्लेटफ़ॉर्म दुरुपयोग टूल का उपयोग किया जाता है, तो ऐसे टूल की सामान्य क्रियाओं में सभी क्षेत्रों में RDS इंस्टेंस की जाँच करना, सभी क्षेत्रों में ECS इंस्टेंस या कंटेनर की जाँच करना, सब-अकाउंट बनाना/हटाना, कमांड निष्पादित करना आदि शामिल होते हैं। ये क्रियाएँ स्वयं संवेदनशील होती हैं, इसलिए इन क्रियाओं को विभिन्न क्लाउड प्लेटफ़ॉर्म के लॉग इंटरफ़ेस के माध्यम से प्राप्त किया जाता है।
दूसरा तरीका अविश्वसनीय नेटवर्क खंडों से संवेदनशील संचालन पर आधारित है। सामान्यतः ये IDC आंतरिक नेटवर्क या IDC आउटगोइंग IP से किए जाते हैं। यदि गैर-उद्यम विश्वसनीय नेटवर्क खंड से AK/SK कॉल और उच्च जोखिम वाला ऑपरेशन होता है, तो सीधे अलर्ट किया जाता है।
सामान्य संवेदनशील प्रमुख संचालन जैसे:
Tencent Cloud और AWS API कॉल के बीच सबसे बड़ा अंतर यह है कि Tencent Cloud API इंटरफ़ेस के माध्यम से किसी AK आईडी की विस्तृत क्रियाओं की जाँच कर सकता है, जबकि AWS केवल प्लेटफ़ॉर्म पर खोज कर सकता है, और AK/SK के माध्यम से किसी AK आईडी की हाल की क्रियाओं की जाँच नहीं कर सकता है।
इसलिए Tencent Cloud AK/SK के दुरुपयोग का पता लगाने के लिए, ऑनलाइन व्यवसाय में उपयोग किए जाने वाले AK आईडी की सूची इनपुट करना और नियमित रूप से किसी AK आईडी द्वारा निष्पादित क्रियाओं की जाँच करना आवश्यक है।
AWS केवल क्षेत्र और क्रिया के आधार पर लॉग प्राप्त कर सकता है। AK/SK के माध्यम से CloudTrail इंटरफ़ेस को कॉल करके किसी क्षेत्र में किसी क्रिया का लॉग प्राप्त करता है।
इसलिए AWS अधिकतर बेसलाइन के आधार पर निर्णय लेता है।
def DescribeInstances(CloudTrailEvent: dict):
"""
检测使用AK/SK列ec2信息
:param CloudTrailEvent:
:return: None
"""
accessKeyId = CloudTrailEvent.get('userIdentity').get('accessKeyId')
arn = CloudTrailEvent.get('userIdentity').get('arn')
eventTime = utc_to_china_tz(CloudTrailEvent.get('eventTime'))
eventName = CloudTrailEvent.get('eventName')
awsRegion = CloudTrailEvent.get('awsRegion')
sourceIPAddress = CloudTrailEvent.get('sourceIPAddress')
userAgent = CloudTrailEvent.get('userAgent')
sip_verify = False
for cidr in while_cidr:
if ipaddress.ip_address(sourceIPAddress) in ipaddress.ip_network(cidr):
sip_verify = True
if not sip_verify and 'aws-internal' not in userAgent:
message = f"{text_title}\n时间:{eventTime}\n账号ID:{arn}\nRegion:{awsRegion}\nAccessKey ID:{accessKeyId}\n"
f"执行动作:{eventName}\nIP地址:{sourceIPAddress}\nUser-Agent:{userAgent}\n\n"
f"检测到有外部IP请求列实例信息,请注意是否为攻击者利用!"
send_message(message)
Discord अलर्ट स्क्रीनशॉट



वर्तमान में केवल व्यवहार के आधार पर पता लगाया जाता है, वास्तव में बेसलाइन के आधार पर भी पता लगाया जा सकता है।