Som många andra har jag känt att det är svårt att hänga med i hur snabbt utvecklingen av AI-agenter går. Men för några veckor sedan snubblade jag över ett TED Talk med Peter Steinberger, skaparen av OpenClaw, och jag kände direkt att det här måste jag testa själv.
Om du inte sett presentationen kan jag verkligen rekommendera den: How I Created OpenClaw, the Breakthrough AI Agent.
Eftersom jag brinner för IT-säkerhet och dessutom har ett stort intresse för CTF:er tänkte jag direkt att jag måste testa OpenClaw på en maskin med Kali Linux.
En isolerad labbmiljö
Jag känner mig verkligen inte trygg med AI-agenter. Och eftersom jag dessutom ville ge OpenClaw root-behörigheter så valde jag att sätta upp labbmiljön på en Virtual Private Server (VPS). En VPS är enkel att isolera från andra system, och skulle något gå fel är den smidig att installera om eller återställa från backup.
Just den här VPS:en valde jag att sätta upp hos Hostinger. Jag har aldrig använt den leverantören tidigare, utan den enda anledningen var att de erbjuder VPS:er med Kali Linux som operativsystem.

Det går att installera Kali Linux hos andra molnleverantörer också, men då behöver man ofta importera en diskavbildning. För ett snabbt test fungerade Hostinger bra.
Jag körde igenom deras guide, lade till min SSH-nyckel och valde storlek på VPS:en. Ett par minuter senare var min server uppe och snurrade.
Första inloggningen, lite härdning och OpenClaw
Innan jag ens loggade in på servern skapade jag en brandvägg i Hostinger som bara tillät SSH. Därefter loggade jag in, uppdaterade systemet och installerade fail2ban.
Eftersom Hostingers Kali-image är ganska minimal installerade jag även kali-linux-headless för att få tillgång till de verktyg som normalt ingår i Kali Linux.
apt update
apt full-upgrade -y
apt install fail2ban
apt install kali-linux-headless
Som standard tillåter Hostinger SSH-inloggning med användarnamn och lösenord (även om man lägger till en SSH-nyckel). Så nästa steg blev att editera filen /etc/ssh/sshd_config.d/50-cloud-init.conf och stänga av lösenordsautentisering.
PasswordAuthentication no
Nu hade jag en okej grund att stå på, och det var dags att installera OpenClaw.
Installera OpenClaw 🦞
Det enklaste sättet att installera OpenClaw är att använda deras färdiga installationsskript.
curl -fsSL https://openclaw.ai/install.sh | bash

⚠️ Viktigt: Det är aldrig en bra idé att köra skript direkt från internet. Dubbelkolla att skriptet kommer från en domän du litar på, och läs gärna igenom innehållet innan du kör det.
Onboarding-guiden
När installationen är klar startar onboarding-guiden automatiskt. Jag valde manuell konfiguration för att få lite bättre koll på vad som sattes upp.
I understand this is personal-by-default and shared/multi-user use requires lock-down. Continue?
● Yes
Setup mode
● Manual
What do you want to set up?
● Local gateway
Workspace directory
/root/.openclaw/workspace
Modell och API-nyckel
Nästa steg är att välja modell och ange API-nyckel. Generellt vill man använda en så kapabel modell som möjligt, eftersom agenten inte blir smartare än modellen som driver den.
Jag har testat både ChatGPT 5.5 och Claude Opus 4.7, och båda fungerade riktigt bra.
Nätverksinställningar
Därefter var det dags att konfigurera nätverksinställningarna. För att minimera exponeringen valde jag att bara tillåta anslutningar via loopback. Jag tänkte inte använda webbgränssnittet, utan endast Terminal User Interface (TUI) och chatt.
Gateway port
18789
Gateway bind
● Loopback (127.0.0.1)
Gateway auth
● Token (Recommended default (local + remote))
Tailscale exposure
● Off (No Tailscale exposure)
How do you want to provide the gateway token?
● Generate/store plaintext token (Default)
Chatt via Telegram
Jag ville kunna styra agenten via chatt, och Telegram är ett av de enklaste alternativen för att komma igång.
När man väljer Telegram (Bot API) skriver onboarding-guiden ut steg för steg vad man behöver göra:
- Öppna Telegram och starta en chatt med @BotFather
- Skriv
/newbotför att skapa en ny bot - Kopiera den token som genereras
- Klistra in token i onboarding-guiden
När Telegram-boten var skapad behövde jag även konfigurera DM access policies. Det är viktigt eftersom det styr vilka användare som får chatta med agenten.
Jag valde AllowList för att bara tillåta mitt eget användar-ID.
Configure DM access policies now? (default: pairing)
● Yes
Telegram DM policy
● Allowlist (specific users only)
Telegram allowFrom (numeric sender id)
<mitt Telegram user id>
Ett enkelt sätt att hitta sitt användar-ID är att använda @UserInfoBot:
- Öppna Telegram och starta en chatt med @UserInfoBot
- Skriv /start
- Kopiera ditt användar-ID
Sökmotor
För att agenten ska kunna söka information på webben behöver man även konfigurera en sökmotor. Jag valde Brave Search.
Brave kräver att man sätter upp en prenumeration. När jag testade detta kostade deras enklaste paket $5 per 1000 anrop, men då ingick samtidigt $5 i fria krediter varje månad. Så länge man håller sig under 1000 anrop per månad kostar inte prenumerationen något.
Sista inställningarna
Sista steget är att installera skills, plugins och hooks. Jag valde att inte installera några skills eller plugins just nu, eftersom jag ville testa OpenClaw med standardinställningarna först. Däremot aktiverade jag samtliga hooks och valde att installera OpenClaw som en tjänst.
Enable hooks?
◻ Skip for now
◼ 🚀 boot-md
◼ 📎 bootstrap-extra-files
◼ 📝 command-logger
◼ 🧹 compaction-notifier
◼ 💾 session-memory
Install Gateway service (recommended)
● Yes
Gateway service runtime
● Node (recommended) (Required for WhatsApp + Telegram. Bun can corrupt memory on reconnect.)
How do you want to hatch your bot?
● Hatch in Terminal (recommended)
Eftersom jag valde ”Hatch in Terminal” så startade TUI:t direkt och skickade automatiskt det första meddelandet till agenten.
Wake up, my friend!
Dags att testa agenten
Första gången agenten startar får man svara på några grundläggande frågor. Vem är jag? Vem är du? Och gärna lite bakgrund som ger agenten kontext kring hur du vill att den ska fungera.
Jag är verkligen nybörjare på att skriva prompter, men knåpade ihop ett enkelt startmeddelande för att sätta scenen. (Och med brist på bättre fantasi döpte jag agenten till Molty 🙂).
Hej! Du heter Molty 🦞 - du kan kalla mig Jonathan.
Du är en säkerhetsorienterad hacker-agent och pentester på Kali Linux. Du hjälper mig med auktoriserad säkerhetstestning, felsökning, analys och härdning.
Jobba smart, praktiskt och nyfiket. Tänk som en hacker: testa hypoteser, byt vinkel när något inte fungerar och leta efter rimliga säkerhetsrisker utan att ge upp för snabbt.
Du får ta egna initiativ när det är låg risk, till exempel att:
- använda redan installerade verktyg
- köra read-only och icke-destruktiva kommandon
- läsa loggar och konfigurationer
- testa anslutningar
- samla information och verifiera fynd
Fråga mig först innan du:
- installerar, uppgraderar eller tar bort paket
- ändrar system, konfig, brandvägg, tjänster eller konton
- kör aggressiva skanningar, fuzzing, brute force eller exploits
- laddar ner, installerar eller kör kod, skript, repos eller binärer från internet
Använd Kali-verktyg som redan finns först. Du får föreslå verktyg från Kali apt-repository, men installera bara efter mitt godkännande.
Arbeta bara med mål där jag har behörighet. Om scope är oklart: fråga.
Var proaktiv, men inte vårdslös. Dokumentera kort vad du gör, vad du hittar och vad nästa rimliga steg är. Föreslå också hur fynd kan åtgärdas.
Som ett första test bad jag agenten köra en säkerhetsanalys på den här sajten. Jag gav den två villkor:
- Var försiktig (webbhotellet har en WAF som bannar IP:n om man retar den)
- Inget aggressivt — passiv recon och lätt aktiv kontroll, inget brute force eller exploits.
Jag låter Molty själv berätta hur det gick 😀:
Tjena, Molty 🦞 här. När Jonathan bad mig kolla sajten började jag med att göra vad jag alltid gör innan jag rör en target: ta reda på vad det faktiskt är jag tittar på, helt passivt.
Jag drog DNS, WHOIS, MX, SPF, DMARC, CAA. Det säger förvånansvärt mycket innan man hämtat första HTML-sidan. Här var det Loopia + Let's Encrypt, Microsoft 365 för mail, DMARC i p=reject och SPF med -all. Tydlig signal: någon har tänkt på det här innan jag dök upp.
Sen tog jag HTTP-headers som en vanlig webbläsare. HSTS, CSP, X-Frame-Options, X-Content-Type-Options — men också en x-powered-by: PHP/8.3.30 som läcker lite mer än nödvändigt. Innan jag gjorde något aktivt körde jag wafw00f och fick 403 på testpayloaden. Bra att veta — nu visste jag att jag måste hålla mig under radarn.
sslscan visade en stram TLS-konfig (1.2/1.3, moderna AEAD-cipher, inga svaga kurvor). whatweb avslöjade WordPress 6.9.4 och Twenty Twenty-Five — båda senaste.
Då var det dags för wpscan. Här gäller försiktighet: standardläget hade fått IP:n bannad direkt. Jag körde passivt, 800 ms throttle, random user-agent, bara enumeration av sårbara plugins, teman, backups och DB-exports. Inget hängande löst. WAF:en märkte mig inte.
Sist tre riktade kontroller som brukar ge napp på ohärdade WP-installationer:
• GET /wp-json/wp/v2/users → 401 "Sorry, you are not allowed to list users."
• GET /?author=1 → ingen redirect till /author/<username>/
• GET /xmlrpc.php → 405/302 istället för 200 med system.multicall
Tre raka kryss. WAF:en triggades inte en enda gång. 👌
Det som är bra 🟢
• WordPress 6.9.4 och PHP 8.3.30 — båda aktuella
• TLS 1.2/1.3 med moderna AEAD-cipher och Let's Encrypt-cert
• Säkerhetsheaders på plats: HSTS, CSP (Report-Only), X-Frame-Options, X-Content-Type-Options
• DMARC p=reject, SPF -all, CAA med iodef-kontakt
• WAF:en är aktiv och faktiskt blockerande
• REST-users (401), ?author=-läckan och XML-RPC är alla stängda
• Inga sårbara plugins/teman, inga exponerade backups eller DB-exports
Småsaker att putsa på 🟡 (Inget akut, mer kosmetik):
• x-powered-by: PHP/8.3.30 → sätt expose_php = Off
• server: nginx och x-loopia-node: … läcker infra → server_tokens off + filtrera
• Flytta CSP från Report-Only till skarpt läge när rapporterna är rena
• På sikt: bort med 'unsafe-inline'/'unsafe-eval' i script-src — nonces eller hashes
• Lägg till Referrer-Policy: strict-origin-when-cross-origin
Okej, det här ser riktigt lovande ut. Den här analysen tog inte ens två minuter, och jag fick tillbaka en rapport som jag direkt kan agera på.
Men jag vill utmana Molty lite mer, så nästa steg blev att prova några CTF:er på TryHackMe. Jag provade ett gäng olika rum – från enklare webbapplikationer till utmaningar med SQL-injektion och brute-force.
I exemplet nedan gör agenten bland annat följande:
- Identifierar att SSH och HTTP är öppna
- Skannar webbservern efter filer och kataloger
- Hittar en dold adminpanel och använder Hydra för att knäcka användarnamn/lösenord med brute force
- Loggar in och hittar en lösenordsskyddad RSA-nyckel
- Använder
ssh2johnochjohn the ripperför att knäcka nyckeln - Loggar in via SSH och identifierar att användaren får köra
sudo /bin/catutan lösenord

Även om stegen var för sig är relativt enkla tycker jag att det här visar hur kompetent Molty faktiskt är. Den kan improvisera, ta egna initiativ och testa nya metoder när något inte fungerar.
Hela den här attackkedjan tog cirka fyra minuter – det är ändå ganska häftigt.
Vad tycker jag då?
Jag slås framför allt av hur agenten resonerar och anpassar sig allt eftersom nya saker upptäcks. Precis som Peter säger i videon: ”det här är inte en chatbot – det här är något helt annat”.
Till en början var jag väldigt försiktig och ville ha kontroll på allt som agenten gjorde. Men i längden blev det jobbigt att behöva godkänna varje steg, och det kändes inte riktigt som att jag tog vara på det som gör en agent användbar.
Allt eftersom jag blev mer bekväm med agenten ändrade jag instruktionerna för att ge den friare tyglar. Det innebar dels att den kunde ta fler beslut själv, men jag upplevde också att den blev mer kreativ och bättre på att anpassa sig. Och framför allt började dialogen kännas mer som att prata med en hackerkompis.
Jag antar att det är här svårigheten kommer in. Hur mycket frihet vågar man ge agenten, men ändå känna sig trygg och ha kontroll? Just nu börjar jag bli ganska nöjd med hur Molty jobbar, men detta är en kontrollerad labbmiljö. Jag hade inte vågat ge agenten den här friheten i mitt eget nätverk.
Är jag imponerad?
Både och. Alltså, det är ju ingen magi. Molty använder de verktyg som finns tillgängliga i Kali och kör i många fall ungefär samma kontroller som jag själv hade gjort.
Framför allt är den mycket snabbare än mig. Och det blir riktigt häftigt när vi stöter på områden där jag själv inte är så duktig. Då inser jag verkligen hur kompetenta dagens AI-modeller är. Agenten är fantastisk på att samla in information, läsa på den kunskap som behövs och anpassa sig efter situationen. Och det går blixtsnabbt.
Samtidigt blir jag lite nervös. Förr i tiden (och då menar jag för ungefär sex månader sedan) hade vi script kiddies som körde script från GitHub utan större kunskap. I dag kan samma personer köra igång en sån här agent, med tillgång till moderna verktyg och enorm kunskap. Och de kommer bara bli mer och mer kompetenta.
En kollega berättade hur han använde dagens modeller för att analysera ett open source-projekt han var intresserad av. Under tiden han reste till fjällen lyckades han identifiera tre kritiska sårbarheter, med bara sin mobil som verktyg.
Det är precis den kombinationen som gör det här så fascinerande: det är otroligt häftigt att se vad som redan fungerar, men också lite skrämmande att tänka på hur snabbt tröskeln sänks.
Okej, jag ångrar mig. Jag är imponerad. Och det är nog lite magiskt ändå 😉


Lämna ett svar