
Elewa kwanza mradi na mipaka ya matumizi
Autonomous Pentest Agent ni mfumo wa majaribio ya kupenya unaojiendesha, unaoendeshwa na mawakala wengi wa LLM, ukitumia backend ya Go, frontend ya Next.js na PostgreSQL. Mradi unaweza kudhibiti kazi, mali, mfuatano wa uchunguzi, matokeo yaliyogunduliwa, rekodi za trafiki, uidhinishaji wa zana na mazungumzo ya ushiriki wa binadamu.
Taarifa muhimu kuhusu usalama na uzingatiaji wa sheria: README inaeleza wazi kwamba mradi huu unapaswa kutumiwa kwa kujifunza binafsi, utafiti wa msimbo chanzi na uthibitishaji wa kiufundi katika mazingira ya ndani yaliyotengwa pekee. Hautakiwi kutumiwa kwenye tovuti yoyote, huduma za mtandaoni, mifumo iliyounganishwa na mtandao, mazingira ya uzalishaji au majaribio halisi ya kupenya. Tumia tu katika maabara ya ndani unayodhibiti, na uzingatie sheria na kanuni za usalama wa mtandao, ulinzi wa data na uhalifu wa kompyuta katika eneo lako.
Mradi unatoa Demo ya mtandaoni kwa ajili ya kuelewa kiolesura cha mwingiliano, lakini uwekaji na uthibitishaji halisi vinapaswa kuzuiwa kabisa katika mazingira ya ndani yaliyotengwa.
Vipengele vikuu na kiolesura
Frontend ya mfumo hutoa kurasa za dashibodi, orodha ya kazi, vipindi vya utekelezaji, mfuatano wa uchunguzi, yaliyogunduliwa, mali, ramani ya ufunikaji wa mali, kurekodi trafiki, usimamizi wa Agent, usanidi wa LLM, uidhinishaji wa uingiliaji na kumbukumbu za backend.

Dashibodi hutumika kuona hali ya jumla, matumizi ya Token na mtiririko wa shughuli. Kurasa za kazi na vipindi huonyesha mchakato wa utekelezaji wa kazi, ikijumuisha vipindi vya Agent na miito ya zana.

Mfuatano wa uchunguzi hutumika kufuatilia uhusiano wa kizazi kati ya shabaha, nia, ukweli na yaliyogunduliwa; ukurasa wa yaliyogunduliwa hutumika kuona udhaifu na ushahidi wake, huku ukurasa wa mali ukitumika kuvinjari mali za shabaha zilizokusanywa na kuunganishwa na mfumo.



Muhtasari wa usanifu wa mfumo
Mfumo unajumuisha backend ya Go ya aina ya monolith yenye frontend tuli ya Next.js iliyopachikwa ndani, PostgreSQL, injini ya Agent na mifumo kadhaa saidizi. Backend hutoa huduma kwa frontend kupitia REST API, uthibitishaji wa JWT na SSE, huku injini ya kazi ikiratibu planner na worker wengi.
Mradi unatumia usanifu wa grafu mbili:
- Grafu ya mali: hazina ya pamoja ya ukweli wa mali inayoshirikiwa kati ya kazi, ikiwa na nodi kama kikoa kikuu, vikoa vidogo, IP, huduma, programu na endpoint.
- Grafu ya uchunguzi: hurekodi shabaha, nia, ukweli, vidokezo na yaliyogunduliwa kwa kila kazi, na kueleza mchakato wa uchunguzi kupitia mahusiano ya kizazi.
- Mahusiano ya nanga: huunganisha nodi za uchunguzi na mali mahususi ili kuona kiwango cha majaribio ya mali na wigo wa uchunguzi.
Planner husoma hali ya uchunguzi na kugawa nia, huku Worker ikichukua nia, kutumia zana, kisha kuandika ukweli, mali na yaliyogunduliwa. Grafu inapobadilika, Planner huamshwa tena na kuunda mzunguko unaoendeshwa na matukio. Worker wengi pia wanaweza kutafuta mchakato wa utekelezaji wa Worker wengine, huku todolist ya pamoja ikisaidia upangaji wa awamu nyingi kuendeleza hatua zinazotegemeana.
Maandalizi kabla ya usakinishaji
Ili kuendesha mradi, angalau PostgreSQL inahitajika. Ili kutekeleza uchunguzi, pia unahitaji kusanidi LLM. Unaweza kutumia ANTHROPIC_API_KEY au OPENAI_API_KEY, au kuzijaza baadaye kwenye ukurasa wa 「Usanidi wa LLM」katika kiolesura cha wavuti.
Inapendekezwa kuandaa Docker ili kuanzisha haraka hifadhidata na programu. Bila kujali njia ya uwekaji utakayochagua, inashauriwa kwanza kuunda mtandao wa majaribio wa ndani uliotengwa, kuhifadhi nakala za data muhimu na kuthibitisha kwamba shabaha za majaribio ni za mazingira ya maabara ya ndani.

Njia ya kwanza: kutumia hati ya usakinishaji wa hatua moja
Hii ndiyo njia inayopendekezwa na README. Hati itagundua au kusakinisha Docker, kisha kukuruhusu kuchagua uwekaji kamili wa Docker au ujenzi na uendeshaji wa ndani.
git clone https://github.com/kutukam/autonomous-pentest-agent.git
cd autonomous-pentest-agent
./install.shUnapochagua uwekaji kamili wa Docker, hati itaomba uweke nenosiri la PostgreSQL. Unaweza pia kubonyeza Enter moja kwa moja ili kuzalisha nenosiri nasibu, kisha kuliandika kwenye .env na kutekeleza docker compose up -d. Unapochagua uendeshaji wa ndani, unaweza kuunganisha hifadhidata iliyopo au kutumia Docker kuanzisha hifadhidata; hati itazalisha config.json, itaunda binary moja ya Go yenye frontend iliyopachikwa na kuanzisha huduma.
Baada ya usakinishaji kukamilika, tembelea http://localhost:8787. Unapoingia kwa mara ya kwanza, fungua /setup ili kuweka nenosiri la msimamizi.
Njia ya pili: kutumia Docker Compose
Ikiwa ungependa kudhibiti mazingira wewe mwenyewe, unaweza kutumia Compose moja kwa moja:
git clone https://github.com/kutukam/autonomous-pentest-agent.git
cd autonomous-pentest-agent
cp .env.example .env
docker compose up -d
Hariri .env ili kujaza POSTGRES_PASSWORD, na usanidi ANTHROPIC_API_KEY inapohitajika. Baada ya kuanzisha, tembelea http://localhost:8787.
Image ya Docker ina zana za kawaida, huku ./skills na ./data zikitumia mount za kuunganisha ili kuhifadhi data. MCP ya mbali inaweza kuchaguliwa katika mipangilio ya mfumo kama Streamable HTTP au SSE ya toleo la zamani; unapotumia SSE ya toleo la zamani, URL kwa kawaida hujazwa kama /sse, na kichwa cha ombi Authorization=Bearer <token> huwekwa kulingana na mahitaji ya huduma.
Njia ya tatu: kutumia binary iliyojengwa awali
Unaweza pia kupakua kifurushi kilichobanwa cha jukwaa lako kutoka kwenye Releases. Baada ya kukifungua, kwa kawaida kitakuwa na apagent, start.sh au start.bat kwenye Windows, skills/ na config.example.json.
cp config.example.json config.json
./start.shTumia start.sh au start.bat kuanzisha, badala ya kuendesha ./apagent moja kwa moja. Hati ya kuanzisha huamua kulingana na msimbo wa kutoka ikiwa programu ianzishwe tena baada ya kutoka. Kipengele cha kusasisha kwa mbofyo mmoja kwenye ukurasa pia kinategemea utaratibu huu. Ili kuendesha nyuma, unaweza kutumia:
nohup ./start.sh >apagent.log 2>&1 &Njia ya nne: kujenga kutoka kwenye msimbo chanzi

Unapojenga kutoka kwenye msimbo chanzi, kwanza unahitaji kujenga faili tuli za frontend, kisha kuzinakili kwenye saraka ya frontend iliyopachikwa ya backend, na hatimaye kutumia lebo ya embedui kujenga programu ya Go.
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.shIkiwa unahitaji kujenga vifurushi vya usambazaji vya majukwaa mbalimbali, unaweza kuendesha:
./build.sh --releaseKwa chaguo-msingi, vifurushi kadhaa vya Linux, macOS na Windows vitazalishwa. Unaweza pia kubinafsisha shabaha kupitia APAGENT_TARGETS. UPX haijawezeshwa kwa chaguo-msingi kwa sababu binary ya kujifungua iliyobanwa inaweza kutopatana na baadhi ya kernel za Linux, mazingira ya uboreshaji wa mashine au sera za usalama.
Kusanidi hifadhidata na LLM
Unapotumia ujenzi wa ndani au binary, unaweza kusanidi PostgreSQL kwenye config.json:
{
"database": {
"host": "127.0.0.1",
"port": 5432,
"user": "apagent",
"password": "yourpass",
"dbname": "apagent",
"sslmode": "disable"
}
}
Unaweza pia kutumia APAGENT_PG_DSN kubatilisha usanidi wa muunganisho wa hifadhidata. LLM inaweza kusanidiwa kupitia vigezo vya mazingira:
export ANTHROPIC_API_KEY=sk-...
# au
export OPENAI_API_KEY=...Vigezo vya hiari ni pamoja na APAGENT_LLM_PROVIDER, APAGENT_LLM_MODEL, APAGENT_LLM_BASE_URL na APAGENT_LLM_PROXY. Ikiwa hutaki kutumia vigezo vya mazingira, unaweza kuzijaza kwenye ukurasa wa 「Usanidi wa LLM」katika UI. Idadi ya Worker kwa kila kazi inaweza kurekebishwa kwenye 「Mipangilio ya mfumo」, na thamani ya chaguo-msingi ni 3.
Mchakato wa msingi wa matumizi
- Kamilisha uanzishaji: tembelea huduma ya ndani, weka nenosiri la msimamizi kwenye
/setupna ukague muunganisho wa hifadhidata. - Sanidi LLM: weka modeli inayopatikana na vigezo muhimu kwenye vigezo vya mazingira vya mfumo au ukurasa wa 「Usanidi wa LLM」.
- Andaa shabaha za ndani: ongeza tu mali za mazingira ya maabara yaliyotengwa unayodhibiti, na uthibitishe kwamba hakuna mifumo ya mtandaoni au huduma za uzalishaji itakayofikiwa.
- Unda na fuatilia kazi: tumia ukurasa wa kazi kudhibiti kazi, na uone hali ya uendeshaji kwenye dashibodi na mtiririko wa shughuli.
- Angalia matokeo ya uchunguzi: tumia mfuatano wa uchunguzi kuelewa uhusiano kati ya nia, ukweli na yaliyogunduliwa, na utumie grafu ya mali kuona mali zilizounganishwa.
- Kagua ushahidi wa utekelezaji: angalia rekodi za mchakato kwenye vipindi, miito ya zana na kurasa za trafiki; operesheni inayohitaji uthibitisho wa binadamu ishughulikiwe kwenye ukurasa wa uidhinishaji wa uingiliaji.

Ramani ya ufunikaji wa mali hutumia mpangilio unaoongozwa na nguvu kuonyesha mali zilizo ndani ya wigo na nodi zilizojaribiwa, ikiwa na uwezo wa kukunja na kupanua nodi. Inafaa kwa kutathmini haraka ni mali zipi tayari zimechunguzwa ndani ya wigo wa maabara ya ndani.
Kusawazisha mali kutoka ScopeSentry
Mradi unaunga mkono kusawazisha mali kutoka ScopeSentry ili kupunguza ukusanyaji unaojirudia. Fungua ukurasa wa 「Usawazishaji wa mali」, jaza anwani ya ScopeSentry na API Key, kisha uchague shabaha na aina za mali za kusawazisha kulingana na mradi au kazi.

- Inaauni kuchagua aina za mali kwa masafa, ikiwa ni pamoja na vikoa, vikoa vidogo, IP, milango, tovuti na vituo vya mwisho.
- Baada ya kuingizwa, mali zitaunganishwa kulingana na wigo wa mali wa kampuni.
- Matokeo ya ulandanishi yataingizwa kwenye grafu ya mali ya Autonomous Pentest Agent kwa matumizi ya baadaye ya kazi za majaribio za ndani.

Rekodi za Trafiki na Uidhinishaji
Mfumo hutoa proksi ya kurekodi trafiki, ambayo inaweza kubainisha anwani za mbele na API pamoja na anwani ya proksi ya trafiki kwa njia kama ./start.sh -addr :8787 -proxy :8788. Mchakato wa utekelezaji wa zana wa Worker utaacha rekodi za shughuli, huku utaratibu wa kuzuia na kuidhinisha ukitumika kumruhusu mtu kuthibitisha uendeshaji wa zana inapohitajika.

Rekodi za uidhinishaji zinaweza kutazamwa kwa undani katika rekodi za uidhinishaji za jumla, uidhinishaji wa vizuizi ndani ya kazi na kadi za uidhinishaji kwenye mazungumzo. Wakati wa matumizi, hakikisha kwa makini kitu kinachoendeshwa na vigezo, na kila mara weka lengo ndani ya mazingira ya majaribio yaliyotengwa.
Jaribio la Pili la Athari
Kichupo cha “Jaribio la pili” katika maelezo ya kazi hukuruhusu kuchagua athari kwa kurasa, kutazama hitimisho na ushahidi wa awali, na kuanzisha kikao huru cha Agent wa majaribio ya pili. Orodha ya athari, maelezo ya athari na mwonekano wa mali vyote vina njia za kuanzisha jaribio la pili.
Hitimisho la jaribio la pili linajumuisha “Bado linaweza kuzalishwa”, “Limetatuliwa” na “Haiwezi kuthibitishwa”. Hitimisho, ushahidi na kiungo cha kikao cha kila jaribio la pili huhifadhiwa katika maelezo ya athari. Jaribio la pili likifanikiwa na hitimisho likawa “Limetatuliwa”, mfumo utasasisha kiotomatiki hali ya kushughulikia athari; hali ya utekelezaji, kushindwa, kusimamishwa au hitimisho jingine haitabadilisha hali ya awali kiotomatiki.
Mara ya kwanza seva ya nyuma inapowashwa, huandaa Agent wa “Jaribio la pili la athari” anayeweza kuhaririwa, yaani retester. Anaweza kusanidiwa katika usimamizi wa Agent kwa kuweka maelekezo, LLM, bajeti ya uendeshaji na zana. Ikiwa athari hiyo hiyo tayari inafanyiwa jaribio la pili, mfumo utatumia tena kikao kilichopo; baada ya kusimamishwa, kushindwa au huduma kuwashwa upya, jaribio linaweza kuanzishwa tena. README pia inaeleza kuwa rekodi za kihistoria za majaribio ya pili bado hazijajumuishwa katika uhamishaji wa ripoti za athari au kifurushi cha kuhifadhi kazi, wala hazijaunganishwa kiotomatiki na kifurushi cha trafiki.

Usambazaji wa Proksi ya Kinyume
Mbele, API na SSE hutolewa kwa chaguo-msingi na mlango mmoja wa seva ya nyuma, hivyo kwa kawaida huhitaji kuweka NEXT_PUBLIC_SSE_BASE. Ikiwa HTTPS itaonyeshwa kupitia Nginx, zima uwekaji akiba wa SSE na weka muda mrefu wa kusubiri usomaji:
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 "";
}
}Ikiwa SSE inatumia chanzo tofauti na ukurasa, ndipo tu unapohitaji kuweka NEXT_PUBLIC_SSE_BASE wakati wa kujenga. Kigezo hiki huwekwa tuli kwenye kifurushi tuli wakati wa next build; kukiweka wakati wa kuendesha kontena hakutafanya kazi.
Uboreshaji na Ulinzi wa Data
Wakati wa kuboresha mradi, programu pekee ndiyo hubadilishwa; haitoziwi kufuta ujazo wa PostgreSQL, ./data au ./skills. Programu inapowashwa, huendesha uanzishaji na uhamishaji wa muundo wa hifadhidata kwa njia salama ya kurudiwa, hivyo kwa kawaida huhitaji kuendesha mwenyewe hati za uhamishaji. Hata hivyo, kabla ya kuboresha unapaswa kuhifadhi nakala ya ./data na hifadhidata.
Inapendekezwa kutekeleza masasisho kupitia kadi ya “Toleo na Masasisho” katika ukurasa wa usanidi wa mfumo. Programu itapakua kifurushi cha toleo cha jukwaa la sasa, kuthibitisha SHA256, kufanya majaribio ya moshi, kisha hati ya kuanzisha itakamilisha ubadilishaji. Uthibitishaji ukishindwa, faili za muda zitatupiliwa mbali; toleo jipya likishindwa kuanza mfululizo, mfumo utarejesha kiotomatiki toleo la awali. Sasisho litaanzisha upya huduma na kukatiza kazi zinazoendelea, hivyo lifanywe wakati wa mapumziko.
Katika usambazaji wa Docker, kusasisha ukurasa hubadilisha programu pekee na hakutasasisha zana kama Playwright na nmap zilizo kwenye picha. Ili kusasisha picha, endesha:

docker compose pull apagent
docker compose up -d apagentUnaweza pia kutumia hati ya kusasisha iliyo kwenye hazina:
./update.shMaendeleo na Majaribio ya Ndani
Hali ya maendeleo inaweza kuanzisha kwa wakati mmoja seva ya nyuma, proksi ya trafiki na seva ya maendeleo ya Next.js:
./dev.shAnwani ya chaguo-msingi ya kufikia ni http://localhost:5173. Unaweza pia kuziendesha kando:
go run ./cmd/apagent
cd web && npm run dev
go test ./...Bila -tags embedui, seva ya nyuma haitapachika kiolesura cha mbele. Ikiwa ungependa kuhakiki kiolesura cha mbele bila kuanzisha seva ya nyuma, tumia:
cd web && NEXT_PUBLIC_MOCK=1 npm run devMambo ya Kuzingatia Mara kwa Mara
- Thibitisha kuwa PostgreSQL imeanza, na ukague jina la mtumiaji, nenosiri, jina la hifadhidata na mlango.
- Ikiwa muunganisho wa mtiririko wa shughuli umefanikiwa lakini hakuna matukio, kagua kama proksi ya kinyume imezima uwekaji akiba, na uthibitishe kuwa muda wa muunganisho wa muda mrefu ni wa kutosha.
- Unapotumia toleo lililokusanywa awali, usipitie
start.shaustart.bat, vinginevyo utaratibu wa kubadilisha na kuanzisha upya kiotomatiki baada ya kusasisha ukurasa unaweza usifanye kazi ipasavyo. - Baada ya kurekebisha rasilimali tuli za mbele, lazima utekeleze tena
npm run build:static, kisha unakili hadiserver/webui/distna uunde tena. - Kabla ya kuboresha, hifadhi nakala ya hifadhidata,
./datana./skills; muundo wa hifadhidata unaweza kuhamishwa kiotomatiki, lakini hautarejeshwa kiotomatiki. - Usiingize mali halisi za mtandaoni, vitambulisho vya uzalishaji au data nyeti kwenye mfumo wa majaribio wa ndani.
Muhtasari
Autonomous Pentest Agent huunganisha huduma ya Go, kiolesura cha Next.js, muundo wa data wa PostgreSQL wenye grafu mbili na uratibu wa LLM wa Agent wengi, na kutoa uwezo wa usimamizi wa kazi, minyororo ya uchunguzi, ufunikaji wa mali, ufuatiliaji wa trafiki, uidhinishaji na majaribio ya pili ya athari. Unaweza kuanza kwa Docker au hati ya usakinishaji katika mazingira yaliyotengwa ya ndani, kisha usanidi hifadhidata na LLM, na mwishowe uelewe hatua kwa hatua tabia ya mfumo kupitia kazi, grafu ya mali na vikao vya utekelezaji. Wakati wa matumizi, lazima uzingatie madhumuni ya kujifunza ya ndani yaliyotajwa na mradi pamoja na mahitaji yote ya kisheria na ya uzingatiaji.
Mradi umetolewa chini ya leseni ya AGPL-3.0; ukirekebisha na kutoa huduma kwa watumiaji kupitia mtandao, lazima utoe msimbo kamili wa chanzo unaohusika kulingana na mahitaji ya leseni. Maelezo zaidi ya utekelezaji yanaweza kupatikana katika msimbo wa chanzo wa hazina, norma SDK na faili ya LICENSE ya mradi.
