
Avval loyiha va foydalanish chegaralarini tushunib oling
Autonomous Pentest Agent — LLM asosidagi ko‘p Agent tomonidan boshqariladigan avtonom penetratsion test tizimi bo‘lib, Go backend, Next.js frontend va PostgreSQL’dan foydalanadi. Loyiha vazifalar, aktivlar, tadqiqot zanjirlari, aniqlangan natijalar, trafik yozuvlari, vositalarni tasdiqlash va inson ishtirokidagi dialoglarni boshqarishi mumkin.
Muhim xavfsizlik va muvofiqlik eslatmasi: README ushbu loyihadan faqat shaxsiy ta’lim, manba kodini o‘rganish va mahalliy izolyatsiyalangan muhitda texnik tekshiruv uchun foydalanishni talab qiladi. Undan hech qanday veb-sayt, onlayn xizmat, tarmoqqa ulangan tizim, ishlab chiqarish muhiti yoki haqiqiy penetratsion testda foydalanish mumkin emas. Uni faqat o‘zingiz nazorat qiladigan mahalliy sinov muhitida ishlating hamda hududingizdagi kiberxavfsizlik, ma’lumotlarni himoya qilish va kompyuter jinoyatlariga oid qonun-qoidalarga rioya qiling.
Loyiha interfeys bilan tanishish uchun onlayn Demo taqdim etadi, biroq amaliy joylashtirish va tekshiruv qat’iy ravishda mahalliy izolyatsiyalangan muhit bilan cheklanishi kerak.
Asosiy funksiyalar va interfeys
Tizim frontend qismida boshqaruv paneli, vazifalar ro‘yxati, bajarilish sessiyalari, tadqiqot zanjirlari, aniqlangan natijalar, aktivlar, aktivlar qamrovi xaritasi, trafik yozuvi, Agent boshqaruvi, LLM sozlamalari, bloklashni tasdiqlash va backend jurnallari kabi sahifalar mavjud.

Boshqaruv paneli umumiy holat, Token sarfi va faoliyat oqimini ko‘rish uchun ishlatiladi. Vazifalar va sessiyalar sahifalari esa Agent sessiyalari hamda vositalar chaqiruvlarini o‘z ichiga olgan vazifa bajarilish jarayonini ko‘rsatadi.

Tadqiqot zanjiri nishonlar, niyatlar, faktlar va aniqlangan natijalar o‘rtasidagi kelib chiqish aloqalarini kuzatish uchun ishlatiladi; aniqlangan natijalar sahifasi zaifliklar va ularning dalillarini ko‘rsatadi, aktivlar sahifasi esa tizim tomonidan yig‘ilgan va birlashtirilgan nishon aktivlarini ko‘rish imkonini beradi.



Tizim arxitekturasi haqida umumiy ma’lumot
Tizim ichiga Next.js statik frontend qismi joylashtirilgan Go monolit backend, PostgreSQL, Agent mexanizmi va bir nechta yordamchi quyi tizimlardan iborat. Backend REST API, JWT autentifikatsiyasi va SSE orqali frontendga xizmat ko‘rsatadi, vazifa mexanizmi esa planner va bir nechta workerlarni rejalashtiradi.
Loyihada ikki grafikdan iborat arxitektura qo‘llanadi:
- Aktivlar grafigi: vazifalar o‘rtasida umumiy aktivlar haqiqiylik bazasi bo‘lib, ildiz domenlar, subdomenlar, IP manzillar, xizmatlar, ilovalar va endpointlar kabi tugunlarni o‘z ichiga oladi.
- Tadqiqot grafigi: har bir vazifa bo‘yicha nishonlar, niyatlar, faktlar, ko‘rsatmalar va aniqlangan natijalarni qayd etadi hamda tadqiqot jarayonini kelib chiqish aloqalari orqali ifodalaydi.
- Anchor aloqalari: tadqiqot tugunlarini aniq aktivlarga bog‘laydi va aktivlarning test qamrovi hamda tadqiqot doirasini ko‘rish imkonini beradi.
Planner tadqiqot holatini o‘qib, niyatlarni tarqatadi. Worker niyatni qabul qiladi, vositalardan foydalanib bajaradi va faktlar, aktivlar hamda aniqlangan natijalarni qayta yozadi. Grafik o‘zgargach, Planner yana uyg‘otiladi va hodisalar asosidagi yopiq sikl hosil bo‘ladi. Bir nechta Worker boshqa Workerlarning bajarilish jarayonini qidirishi mumkin, umumiy todolist esa ko‘p bosqichli rejalashtirishga bog‘liqliklar asosida izchil davom etishga yordam beradi.
O‘rnatishdan oldingi tayyorgarlik
Loyihani ishga tushirish uchun kamida PostgreSQL kerak. Tadqiqotni bajarish uchun LLM ham sozlanishi lozim; buning uchun ANTHROPIC_API_KEY yoki OPENAI_API_KEY dan foydalanish mumkin, yoki ularni keyinroq Web interfeysining «LLM konfiguratsiyasi» sahifasida kiritish mumkin.
Ma’lumotlar bazasi va ilovani tez ishga tushirish uchun Docker tayyorlab qo‘yish tavsiya etiladi. Qaysi joylashtirish usuli tanlanishidan qat’i nazar, avval izolyatsiyalangan mahalliy test tarmog‘ini yaratish, muhim ma’lumotlarning zaxira nusxasini olish va test nishoni mahalliy tajriba muhitiga tegishli ekanini tasdiqlash tavsiya etiladi.

Birinchi usul: bir marta bosiladigan o‘rnatish skriptidan foydalanish
Bu README tavsiya qilgan o‘rnatish usulidir. Skript Docker’ni tekshiradi yoki o‘rnatadi hamda to‘liq Docker joylashtirishi yoki mahalliy kompilyatsiya va ishga tushirishni tanlash imkonini beradi.
git clone https://github.com/kutukam/autonomous-pentest-agent.git
cd autonomous-pentest-agent
./install.shTo‘liq Docker joylashtirilishi tanlanganda, skript PostgreSQL parolini kiritishni so‘raydi. Enter tugmasini bosib, tasodifiy parol yaratish ham mumkin; keyin u .env fayliga yoziladi va docker compose up -d bajariladi. Mahalliy ishga tushirish tanlanganda, mavjud ma’lumotlar bazasiga ulanish yoki Docker orqali ma’lumotlar bazasini ishga tushirish mumkin; skript config.json faylini yaratadi, frontend joylashtirilgan Go yagona binar faylini kompilyatsiya qiladi va xizmatni ishga tushiradi.
O‘rnatish tugagach, http://localhost:8787 manziliga kiring. Birinchi kirishda administrator parolini o‘rnatish uchun /setup manzilini oching.
Ikkinchi usul: Docker Compose’dan foydalanish
Muhitni qo‘lda boshqarishni istasangiz, Compose’dan bevosita foydalanishingiz mumkin:
git clone https://github.com/kutukam/autonomous-pentest-agent.git
cd autonomous-pentest-agent
cp .env.example .env
docker compose up -d
.env faylini tahrirlab, POSTGRES_PASSWORD qiymatini kiriting va zarur bo‘lsa ANTHROPIC_API_KEY ni sozlang. Ishga tushirgach, http://localhost:8787 manziliga kiring.
Docker image odatiy vositalarni o‘z ichiga oladi, ./skills va ./data esa ma’lumotlarni saqlash uchun bind mount orqali ulanadi. Masofaviy MCP’ni tizim sozlamalarida Streamable HTTP yoki eski SSE sifatida tanlash mumkin; eski SSE’dan foydalanganda URL odatda /sse ko‘rinishida kiritiladi va xizmat talablariga muvofiq Authorization=Bearer <token> so‘rov sarlavhasi o‘rnatiladi.
Uchinchi usul: oldindan kompilyatsiya qilingan binar fayldan foydalanish
Shuningdek, Releases sahifasidan mos platforma uchun siqilgan paketni yuklab olish mumkin. Arxivdan chiqarilgach, odatda apagent, start.sh yoki Windows uchun start.bat, skills/ va config.example.json fayllari bo‘ladi.
cp config.example.json config.json
./start.shIshga tushirish uchun ./apagent ni bevosita bajarish o‘rniga start.sh yoki start.bat dan foydalaning. Ishga tushirish skripti dastur chiqishidan keyin chiqish kodi asosida uni qayta ishga tushirish kerakligini belgilaydi; sahifadagi bir marta bosiladigan yangilash funksiyasi ham shu mexanizmga tayanadi. Fon rejimida ishlatish uchun:
nohup ./start.sh >apagent.log 2>&1 &To‘rtinchi usul: manba kodidan kompilyatsiya qilish

Manba kodidan kompilyatsiya qilishda avval frontend statik fayllarini yaratish, keyin ularni backendning ichiga joylashtiriladigan katalogiga nusxalash va nihoyat embedui tegi bilan Go dasturini kompilyatsiya qilish kerak.
cd web && npm ci && npm run build:static && cd ..
cp -r web/out server/webui/dist
CGO_ENABLED=0 go build -tags embedui -o apagent ./cmd/apagent
./start.shPlatformalararo tarqatish paketlarini yaratish kerak bo‘lsa, quyidagini ishga tushiring:
./build.sh --releaseStandart holatda Linux, macOS va Windows uchun bir nechta maqsadli paket yaratiladi. Maqsadlarni APAGENT_TARGETS orqali sozlash mumkin. UPX standart bo‘yicha yoqilmagan, chunki siqilgan o‘z-o‘zidan ochiluvchi binar fayl ayrim Linux yadrolari, virtualizatsiya muhitlari yoki xavfsizlik siyosatlari bilan mos kelmasligi mumkin.
Ma’lumotlar bazasi va LLM’ni sozlash
Mahalliy kompilyatsiya yoki binar fayl orqali ishga tushirishda PostgreSQL’ni config.json faylida sozlash mumkin:
{
"database": {
"host": "127.0.0.1",
"port": 5432,
"user": "apagent",
"password": "yourpass",
"dbname": "apagent",
"sslmode": "disable"
}
}
Ma’lumotlar bazasiga ulanish konfiguratsiyasini APAGENT_PG_DSN orqali ham bekor qilish mumkin. LLM’ni muhit o‘zgaruvchilari orqali sozlash mumkin:
export ANTHROPIC_API_KEY=sk-...
# yoki
export OPENAI_API_KEY=...Ixtiyoriy parametrlar qatoriga APAGENT_LLM_PROVIDER, APAGENT_LLM_MODEL, APAGENT_LLM_BASE_URL va APAGENT_LLM_PROXY kiradi. Muhit o‘zgaruvchilaridan foydalanishni istamasangiz, ularni UI’dagi «LLM konfiguratsiyasi» sahifasida kiriting. Har bir vazifadagi Workerlar sonini «Tizim sozlamalari» bo‘limida o‘zgartirish mumkin, standart qiymat 3.
Asosiy foydalanish jarayoni
- Boshlang‘ich sozlashni yakunlang: mahalliy xizmatga kiring,
/setupmanzilida administrator parolini o‘rnating va ma’lumotlar bazasiga ulanishni tekshiring. - LLM’ni sozlang: tizim muhit o‘zgaruvchilarida yoki «LLM konfiguratsiyasi» sahifasida mavjud model va zarur parametrlarni belgilang.
- Mahalliy nishonni tayyorlang: faqat izolyatsiyalangan tajriba muhitida o‘zingiz nazorat qiladigan aktivlarni qo‘shing va onlayn tizimlar yoki ishlab chiqarish xizmatlariga murojaat qilinmasligini tasdiqlang.
- Vazifa yarating va kuzating: vazifalar sahifasi orqali vazifalarni boshqaring, boshqaruv paneli va faoliyat oqimida ish holatini ko‘ring.
- Tadqiqot natijalarini ko‘ring: tadqiqot zanjiri orqali niyatlar, faktlar va aniqlangan natijalar o‘rtasidagi aloqalarni, aktivlar grafigi orqali esa birlashtirilgan aktivlarni ko‘ring.
- Bajarilish dalillarini tekshiring: sessiyalar, vositalar chaqiruvi va trafik sahifalarida jarayon yozuvlarini ko‘ring; inson tasdig‘ini talab qiladigan amal yuzaga kelganda, uni bloklashni tasdiqlash sahifasida ko‘rib chiqing.

Aktivlar qamrovi xaritasi doiradagi aktivlar va testdan o‘tgan tugunlarni kuchga yo‘naltirilgan joylashuvda ko‘rsatadi hamda tugunlarni yig‘ish va yoyishni qo‘llab-quvvatlaydi. U mahalliy tajriba doirasida qaysi aktivlar allaqachon tadqiq qilinganini tez aniqlash uchun qulay.
ScopeSentry’dan aktivlarni sinxronlash
Loyiha takroriy yig‘ishni kamaytirish uchun aktivlarni ScopeSentry’dan sinxronlashni qo‘llab-quvvatlaydi. «Aktivlarni sinxronlash» sahifasini oching, ScopeSentry manzili va API Key’ni kiriting, so‘ng loyiha yoki vazifa bo‘yicha sinxronlanadigan nishonlar va aktiv turlarini tanlang.

- Domenlar, subdomenlar, IP manzillar, portlar, saytlar va endpointlar kabi aktiv turlarini diapazon bo‘yicha tanlashni qo‘llab-quvvatlaydi.
- Import qilingandan so‘ng ular kompaniya aktivlari doirasi bo‘yicha guruhlanadi.
- Sinxronizatsiya natijalari Autonomous Pentest Agent aktivlar grafigiga kiritiladi va keyingi mahalliy laboratoriya vazifalarida foydalaniladi.

Trafikni qayd etish va tasdiqlash
Tizim trafikni yozib oluvchi proksi-serverni taqdim etadi. U orqali frontend va API manzillari hamda trafik proksi manzilini ./start.sh -addr :8787 -proxy :8788 kabi usulda belgilash mumkin. Worker vositalarini bajarish jarayonida faoliyat qaydlari saqlanadi, aralashuvni tasdiqlash mexanizmi esa zarur hollarda inson tomonidan vosita amallarini tasdiqlash imkonini beradi.

Tasdiqlash qaydlarida tafsilotlarni global tasdiqlash qaydlari, vazifa ichidagi aralashuv tasdig‘i hamda suhbatdagi tasdiqlash kartalari orqali ko‘rish mumkin. Foydalanishda amal obyekti va parametrlarini diqqat bilan tekshiring hamda maqsadni doimo izolyatsiya qilingan laboratoriya muhiti bilan cheklang.
Zaiflikni qayta tekshirish
Vazifa tafsilotlaridagi «Qayta tekshirish» yorlig‘i orqali zaifliklarni sahifalar bo‘yicha tanlash, tarixiy xulosalar va dalillarni ko‘rish hamda mustaqil qayta tekshiruvchi Agent sessiyasini boshlash mumkin. Zaifliklar ro‘yxati, zaiflik tafsilotlari va aktivlar ko‘rinishining barchasida qayta tekshirishga kirish nuqtasi mavjud.
Qayta tekshirish xulosalari «Hali ham takrorlanadi», «Tuzatildi» va «Tasdiqlab bo‘lmaydi» variantlarini o‘z ichiga oladi. Har bir qayta tekshirishning xulosasi, dalillari va sessiya havolasi zaiflik tafsilotlarida saqlanadi. Qayta tekshirish muvaffaqiyatli yakunlanib, xulosa «Tuzatildi» bo‘lsa, tizim zaiflik holatini avtomatik yangilaydi; bajarilish jarayoni, xatolik, to‘xtatilish yoki boshqa xulosalar dastlabki holatni avtomatik o‘zgartirmaydi.
Backend ilk bor ishga tushirilganda tahrirlash mumkin bo‘lgan «Zaiflikni qayta tekshirish» Agenti, ya’ni retester, oldindan sozlanadi. Uning prompti, LLM’i, ish byudjeti va vositalarini Agent boshqaruvida sozlash mumkin. Agar ayni zaiflik qayta tekshirilayotgan bo‘lsa, tizim mavjud sessiyadan qayta foydalanadi; to‘xtatilgandan, xatolikdan yoki xizmat qayta ishga tushirilgandan so‘ng qayta boshlash mumkin. README’da tarixiy qayta tekshirish qaydlari hozircha zaiflik hisobotini eksport qilish yoki vazifa arxiv paketiga kiritilmagani, shuningdek trafik paketlari bilan avtomatik bog‘lanmasligi qayd etilgan.

Teskari proksi orqali joylashtirish
Frontend, API va SSE sukut bo‘yicha bitta backend porti orqali taqdim etiladi, shuning uchun odatda NEXT_PUBLIC_SSE_BASE ni sozlash shart emas. Agar HTTPS Nginx orqali ochilsa, SSE buferlashini o‘chirib, o‘qish uchun uzoqroq taym-aut belgilang:
server {
listen 443 ssl;
server_name your.domain.com;
location / {
proxy_pass http://127.0.0.1:8787;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}SSE sahifadan boshqa manbadan foydalangandagina qurish vaqtida NEXT_PUBLIC_SSE_BASE ni sozlash kerak. Ushbu o‘zgaruvchi next build vaqtida statik paketga yozib qo‘yiladi, konteyner ishga tushgandan keyin uni sozlash kuchga kirmaydi.
Yangilash va ma’lumotlarni himoya qilish
Loyihani yangilashda faqat dastur almashtiriladi; PostgreSQL ma’lumotlar tomlari, ./data yoki ./skills faol tarzda o‘chirilmaydi. Ilova ishga tushganda ma’lumotlar bazasi tuzilmasini ishga tushirish va migratsiya qilish idempotent tarzda bajariladi, shuning uchun odatda migratsiya skriptlarini qo‘lda ishga tushirish talab qilinmaydi. Shunga qaramay, yangilashdan oldin ./data va ma’lumotlar bazasining zaxira nusxasini yarating.
Yangilashni tizim sozlamalari sahifasidagi «Versiya va yangilanishlar» kartasi orqali bajarish tavsiya etiladi. Dastur joriy platforma uchun chiqarilgan paketni yuklab oladi, SHA256 ni tekshiradi, smoke-test o‘tkazadi, so‘ng ishga tushirish skripti almashtirishni yakunlaydi. Tekshiruv muvaffaqiyatsiz bo‘lsa, vaqtinchalik fayllar o‘chiriladi; yangi versiya ketma-ket ishga tushishda xato qilsa, tizim avtomatik ortga qaytadi. Yangilash xizmatni qayta ishga tushiradi va ishlayotgan vazifalarni to‘xtatadi, shuning uchun uni tizim bo‘sh paytda amalga oshiring.
Docker orqali joylashtirilganda sahifa yangilanishi faqat dasturni almashtiradi, image ichidagi Playwright, nmap va boshqa vositalar zanjiri yangilanmaydi. Image’ni yangilash uchun quyidagilarni ishga tushiring:

docker compose pull apagent
docker compose up -d apagentShuningdek, repozitoriydagi yangilash skriptidan foydalanish mumkin:
./update.shMahalliy ishlab chiqish va testlash
Ishlab chiqish rejimida backend, trafik proksi-serveri va Next.js ishlab chiqish serverini bir vaqtda ishga tushirish mumkin:
./dev.shSukut bo‘yicha kirish manzili http://localhost:5173. Ularni alohida ishga tushirish ham mumkin:
go run ./cmd/apagent
cd web && npm run dev
go test ./...-tags embedui berilmasa, backend frontendni ichiga joylamaydi. Backendni ishga tushirmasdan faqat frontendni ko‘rishni istasangiz, quyidagidan foydalaning:
cd web && NEXT_PUBLIC_MOCK=1 npm run devKo‘p uchraydigan e’tiborli jihatlar
- PostgreSQL ishga tushirilganini tasdiqlang, foydalanuvchi nomi, parol, ma’lumotlar bazasi nomi va portni tekshiring.
- Agar faoliyat oqimi ulanishi muvaffaqiyatli bo‘lsa-yu, hodisalar ko‘rinmasa, teskari proksi buferlashni o‘chirganini va uzoq ulanish taym-auti yetarlicha uzunligini tekshiring.
- Oldindan kompilyatsiya qilingan versiyadan foydalanganda
start.shyokistart.batni chetlab o‘tmang, aks holda sahifa yangilangandan keyingi avtomatik almashtirish va qayta ishga tushirish mexanizmi to‘g‘ri ishlamasligi mumkin. - Frontend statik resurslari o‘zgartirilgandan so‘ng
npm run build:staticni qayta ishga tushiring, keyin ularniserver/webui/distga nusxalang va qayta kompilyatsiya qiling. - Yangilashdan oldin ma’lumotlar bazasi,
./datava./skillsning zaxira nusxasini yarating; ma’lumotlar bazasi tuzilmasi avtomatik ko‘chirilishi mumkin, ammo avtomatik ortga qaytarilmaydi. - Haqiqiy ishlab turgan muhit aktivlari, ishlab chiqarish hisob ma’lumotlari yoki maxfiy ma’lumotlarni mahalliy laboratoriya tizimiga import qilmang.
Xulosa
Autonomous Pentest Agent Go xizmati, Next.js interfeysi, PostgreSQL’ning ikki grafik ma’lumotlar modeli va LLM ko‘p Agentli rejalashtirishini birlashtirib, vazifalarni boshqarish, tadqiqot zanjiri, aktivlar qamrovi, trafik izlari, tasdiqlash va zaifliklarni qayta tekshirish imkoniyatlarini taqdim etadi. Avval Docker yoki o‘rnatish skripti yordamida mahalliy izolyatsiya qilingan muhitda ishga tushiring, keyin ma’lumotlar bazasi va LLM’ni sozlang, nihoyat vazifalar, aktivlar grafigi va bajarilish sessiyalari orqali tizim xatti-harakatlarini bosqichma-bosqich o‘rganing. Foydalanish davomida loyiha deklaratsiyasida ko‘rsatilgan mahalliy o‘rganish maqsadlariga va barcha qonuniy muvofiqlik talablariga qat’iy rioya qiling.
Loyiha AGPL-3.0 litsenziyasi asosida tarqatiladi; agar uni o‘zgartirib, tarmoq orqali foydalanuvchilarga xizmat ko‘rsatsangiz, litsenziya talablariga muvofiq tegishli to‘liq manba kodini oshkor qilishingiz kerak. Amalga oshirish tafsilotlari uchun repozitoriydagi manba kodiga, norma SDK va loyiha LICENSE fayliga murojaat qiling.
