Reducer jeres risiko

Hvorfor ender en rig bygget til at knække passwords med at køre lokale LLM'er i stedet?

Simon fortæller, hvordan Bambino gik fra en rig til at knække passwords til at være PB's lokale LLM-miljø, så vi har bedre kontrol over følsomme oplysninger.

Det bygger artiklen på

Ægte PB-erfaring

Bygget på en intern penetrationstest og den infrastruktur, PB skabte til rigtigt sikkerhedsarbejde.

Et praktisk spørgsmål

Hvordan kan vi bruge AI og samtidig have bedre kontrol over de oplysninger, vi arbejder med?

Ekspertens perspektiv

Simon fortæller om den tekniske rejse bag det system, han selv har bygget og bruger.

At knække passwords er rart, men at chatte med sine GPU'er er sjovt.

Ved interne penetrationstest og Red Team-opgaver ved vi af erfaring, at vi næsten med garanti får fat i password-hashes. Men hvad skal man med en password-hash, hvis den ikke kan (mis)bruges, som den er? Det er her, rigen til at knække passwords kommer ind i billedet.

Det oplagte svar

Med de rigtige værktøjer er det ingen videnskab at knække passwords. Der findes onlinetjenester som https://crackstation.net/, der ganske enkelt giver jer passwordet til den hash, I indtaster. Lyder godt, ikke? Det er det også! Der er bare et hav af forbehold, for eksempel hvilke typer password-hashes der understøttes, og at tjenesten kun bruger opslagstabeller.

En anden mulighed er værktøjer, der har været tilgængelige for alle i mindst ti år, som hashcat og John the Ripper jumbo. De er reelt industristandard, de understøttes rigtig godt på almindelig forbrugerhardware, og de er virkelig nemme at bruge.

Min arbejdsplads gav mig en bærbar, så lad os knække nogle passwords!

Tja, ja og nej. Selvom hashcat stort set kan køre på jeres telefon eller jeres Texas Instruments TI-81, betyder ydelsen enormt meget, når det handler om at knække passwords.

Som eksempel er her mit forsøg på at brute-force et NTLM-password på 8 tegn på min bærbare med en Intel Core Ultra 9 185H:

Session..........: hashcat
Status...........: Running
Hash.Mode........: 1000 (NTLM)
Hash.Target......: 556d1e4c703d8d6411d5f2258aa4a8bb
Time.Started.....: Fri Sep 18 06:58:16 2026 (1 sec)
Time.Estimated...: Mon Oct 26 08:27:30 2026 (38 days, 1 hour)
Kernel.Feature...: Optimized Kernel (password length 0-27 bytes)
Guess.Mask.......: ?a?a?a?a?a?a?a?a [8]
Guess.Queue......: 1/1 (100.00%)
Speed.#01........: 2017.4 MH/s (10.50ms) @ Accel:1024 Loops:1024 Thr:1 Vec:8
Recovered........: 0/1 (0.00%) Digests (total), 0/1 (0.00%) Digests (new)
Progress.........: 1829836800/6634204312890625 (0.00%)
Rejected.........: 0/1829836800 (0.00%)
Restore.Point....: 202752/735091890625 (0.00%)
Restore.Sub.#01..: Salt:0 Amplifier:0-1024 Iteration:0-1024
Candidate.Engine.: Device Generator
Candidates.#01...: $HEX[7320344c36202020] -> $HEX[5b2a457b38202020]

Lad os også se på hashes fra Kerberoasting, som er berygtede for at være meget langsommere at knække:

Session..........: hashcat
Status...........: Running
Hash.Mode........: 13100 (Kerberos 5, etype 23, TGS-REP)
Hash.Target......: $krb5tgs$23$*sql-service$CORP.LOCAL$MSSQLSvc/db01.c...3e3f40
Time.Started.....: Fri Sep 18 07:04:49 2026 (0 secs)
Time.Estimated...: Tue Jun 23 05:02:23 2043 (16 years, 277 days)
Kernel.Feature...: Optimized Kernel (password length 0-55 bytes)
Guess.Mask.......: ?a?a?a?a?a?a?a?a [8]
Guess.Queue......: 1/1 (100.00%)
Speed.#01........: 12542.6 kH/s (94.30ms) @ Accel:53 Loops:1024 Thr:1 Vec:8
Recovered........: 0/1 (0.00%) Digests (total), 0/1 (0.00%) Digests (new)
Progress.........: 5969920/6634204312890625 (0.00%)
Rejected.........: 0/5969920 (0.00%)
Restore.Point....: 0/7737809375 (0.00%)
Restore.Sub.#01..: Salt:0 Amplifier:5120-6144 Iteration:0-1024
Candidate.Engine.: Device Generator
Candidates.#01...: ^ILerane -> Qjap1999

De fleste af mine opgaver varer ikke 38 dage eller mere, og slet ikke 16 år. Så selvom det virker og burde blive færdigt på et tidspunkt, er det ikke realistisk til den type test, jeg laver.

Så hvilke muligheder har jeg?

Få.

Da jeg ikke bliver inviteret med til bordet, når Jensen Huang og Nvidia fordeler deres allerbedste GPU'er, og jeg ikke er klog nok til at genskabe, hvordan vi fik sten til at regne, valgte jeg det kraftigste grafikkort til forbrugere, der (på det tidspunkt) var til at få fat i. Det blev to RTX 5090'ere:

To RTX 5090-grafikkort
To RTX 5090-grafikkort

Den fulde hardwareliste er her:

  • GPU: 2x Gainward GeForce RTX 5090 Phantom GS
  • CPU: AMD Ryzen 5 9600X
  • CPU-køler: Noctua NH-D15
  • RAM: 4x 32GB G.Skill Flare X5 DDR5-6000 CL28
  • Bundkort: GIGABYTE B850 AI TOP
  • Strømforsyning: GIGABYTE UD1600PM PG5 AI TOP
  • SSD: 2TB Samsung 990 Pro

Så hvad kan den tingest? (Den hedder Bambino, hvis nogen skulle undre sig)

Session..........: hashcat
Status...........: Running
Hash.Mode........: 1000 (NTLM)
Hash.Target......: 556d1e4c703d8d6411d5f2258aa4a8bb
Time.Started.....: Fri Sep 18 10:49:09 2026 (0 secs)
Time.Estimated...: Fri Sep 18 11:07:43 2026 (18 mins, 34 secs)
Kernel.Feature...: Pure Kernel (password length 0-256 bytes)
Guess.Mask.......: ?1?1?1?1?1?1?1?1 [8]
Guess.Charset....: -1 ?l?u?d, -2 N/A, -3 N/A, -4 N/A, -5 N/A, -6 N/A, -7 N/A, -8 N/A
Guess.Queue......: 1/1 (100.00%)
Speed.#01........: 98840.7 MH/s (5.21ms) @ Accel:3 Loops:1024 Thr:1024 Vec:1
Speed.#02........: 96942.1 MH/s (5.31ms) @ Accel:3 Loops:1024 Thr:1024 Vec:1
Speed.#*.........: 195.8 GH/s
Recovered........: 0/1 (0.00%) Digests (total), 0/1 (0.00%) Digests (new)
Progress.........: 105885204480/218340105584896 (0.05%)
Rejected.........: 0/105885204480 (0.00%)
Restore.Point....: 0/916132832 (0.00%)
Restore.Sub.#01..: Salt:0 Amplifier:102400-103424 Iteration:0-1024
Restore.Sub.#02..: Salt:0 Amplifier:100352-101376 Iteration:0-1024
Candidate.Engine.: Device Generator
Candidates.#01...: Jcwerane -> pVJcDous
Candidates.#02...: ASh2W100 -> awk6Cron
Hardware.Mon.#01.: Temp: 53c Fan: 51% Util:100% Core:2857MHz Mem:13801MHz Bus:8
Hardware.Mon.#02.: Temp: 48c Fan: 50% Util: 23% Core:2940MHz Mem:13801MHz Bus:8
Session..........: hashcat
Status...........: Running
Hash.Mode........: 13100 (Kerberos 5, etype 23, TGS-REP)
Hash.Target......: $krb5tgs$23$*sql-service$CORP.LOCAL$MSSQLSvc/db01.c...3e3f40
Time.Started.....: Fri Sep 18 10:50:25 2026 (1 sec)
Time.Estimated...: Sun Sep 27 05:37:40 2026 (8 days, 18 hours)
Kernel.Feature...: Optimized Kernel (password length 0-55 bytes)
Guess.Mask.......: ?a?a?a?a?a?a?a?a [8]
Guess.Queue......: 1/1 (100.00%)
Speed.#01........: 4421.3 MH/s (96.12ms) @ Accel:307 Loops:256 Thr:32 Vec:1
Speed.#02........: 4321.3 MH/s (98.43ms) @ Accel:307 Loops:256 Thr:32 Vec:1
Speed.#*.........: 8742.6 MH/s
Recovered........: 0/1 (0.00%) Digests (total), 0/1 (0.00%) Digests (new)
Progress.........: 10260971520/6634204312890625 (0.00%)
Rejected.........: 0/10260971520 (0.00%)
Restore.Point....: 0/7737809375 (0.00%)
Restore.Sub.#01..: Salt:0 Amplifier:3072-3328 Iteration:0-256
Restore.Sub.#02..: Salt:0 Amplifier:3072-3328 Iteration:0-256
Candidate.Engine.: Device Generator
Candidates.#01...: MGUerane -> 1yl#$``1
Candidates.#02...: MGU=k`1 -> 1yl_rss
Hardware.Mon.#01.: Temp: 54c Fan: 51% Util: 99% Core:2865MHz Mem:13801MHz Bus:8
Hardware.Mon.#02.: Temp: 53c Fan: 51% Util:100% Core:2910MHz Mem:13801MHz Bus:8

Fra 38 dage til 18 minutter, og fra 16 år til 8 dage, ser mere overkommeligt ud. Det er også værd at huske, at brute-force sjældent er måden, det ville blive gjort på, men det giver en idé om tidshorisonterne. Hele hashcat-benchmarken kan ses her:

hashcat -d 1,2 -b
hashcat (v7.0.0) starting in benchmark mode
Benchmarking uses hand-optimized kernel code by default.
You can use it in your cracking session by setting the -O option.
Note: Using optimized kernel code limits the maximum supported password length.
To disable the optimized kernel code in benchmark mode, use the -w option.

Failed to initialize the AMD main driver HIP runtime library. Please install the AMD HIP SDK.
Failed to initialize AMD HIP RTC library. Please install the AMD HIP SDK.

CUDA API (CUDA 13.0)
====================
* Device #01: NVIDIA GeForce RTX 5090, 30840/32606 MB, 170MCU
* Device #02: NVIDIA GeForce RTX 5090, 30840/32606 MB, 170MCU

OpenCL API (OpenCL 2.1 AMD-APP (3640.0)) - Platform #1 [Advanced Micro Devices, Inc.]
=====================================================================================
* Device #03: AMD Radeon(TM) Graphics, skipped

OpenCL API (OpenCL 3.0 CUDA 13.0.78) - Platform #2 [NVIDIA Corporation]
=======================================================================
* Device #04: NVIDIA GeForce RTX 5090, skipped
* Device #05: NVIDIA GeForce RTX 5090, skipped

Benchmark relevant options:
===========================
* --backend-devices=1,2
* --backend-devices-virtmulti=1
* --backend-devices-virthost=1
* --optimized-kernel-enable

-------------------
* Hash-Mode 0 (MD5)
-------------------
Speed.#01........:   218.4 GH/s (77.34ms) @ Accel:128 Loops:1024 Thr:768 Vec:8
Speed.#02........:   220.7 GH/s (76.48ms) @ Accel:128 Loops:1024 Thr:768 Vec:8
Speed.#*.........:   439.1 GH/s

----------------------
* Hash-Mode 100 (SHA1)
----------------------
Speed.#01........: 67778.8 MH/s (83.42ms) @ Accel:64 Loops:1024 Thr:512 Vec:1
Speed.#02........: 68593.7 MH/s (82.47ms) @ Accel:64 Loops:1024 Thr:512 Vec:1
Speed.#*.........:   136.4 GH/s

---------------------------
* Hash-Mode 1400 (SHA2-256)
---------------------------
Speed.#01........: 27545.7 MH/s (90.01ms) @ Accel:14 Loops:1024 Thr:1024 Vec:4
Speed.#02........: 27872.7 MH/s (88.77ms) @ Accel:14 Loops:1024 Thr:1024 Vec:4
Speed.#*.........: 55418.4 MH/s

---------------------------
* Hash-Mode 1700 (SHA2-512)
---------------------------
Speed.#01........:  9952.1 MH/s (88.80ms) @ Accel:8 Loops:1024 Thr:640 Vec:1
Speed.#02........: 10039.9 MH/s (87.90ms) @ Accel:8 Loops:1024 Thr:640 Vec:1
Speed.#*.........: 19992.0 MH/s

-------------------------------------------------------------
* Hash-Mode 22000 (WPA-PBKDF2-PMKID+EAPOL) [Iterations: 4095]
-------------------------------------------------------------
Speed.#01........:  3414.7 kH/s (94.75ms) @ Accel:10 Loops:1024 Thr:768 Vec:1
Speed.#02........:  3460.1 kH/s (93.49ms) @ Accel:10 Loops:1024 Thr:768 Vec:1
Speed.#*.........:  6874.8 kH/s

-----------------------
* Hash-Mode 1000 (NTLM)
-----------------------
Speed.#01........:   327.9 GH/s (84.77ms) @ Accel:192 Loops:1024 Thr:896 Vec:8
Speed.#02........:   329.2 GH/s (83.70ms) @ Accel:192 Loops:1024 Thr:896 Vec:8
Speed.#*.........:   657.1 GH/s

---------------------
* Hash-Mode 3000 (LM)
---------------------
Speed.#01........:   203.1 GH/s (56.26ms) @ Accel:416 Loops:1024 Thr:256 Vec:1
Speed.#02........:   205.9 GH/s (55.55ms) @ Accel:416 Loops:1024 Thr:256 Vec:1
Speed.#*.........:   409.0 GH/s

--------------------------------------------
* Hash-Mode 5500 (NetNTLMv1 / NetNTLMv1+ESS)
--------------------------------------------
Speed.#01........:   198.4 GH/s (71.05ms) @ Accel:96 Loops:1024 Thr:896 Vec:1
Speed.#02........:   200.2 GH/s (70.16ms) @ Accel:96 Loops:1024 Thr:896 Vec:1
Speed.#*.........:   398.5 GH/s

----------------------------
* Hash-Mode 5600 (NetNTLMv2)
----------------------------
Speed.#01........: 15676.2 MH/s (88.18ms) @ Accel:8 Loops:1024 Thr:1024 Vec:1
Speed.#02........: 15842.7 MH/s (87.14ms) @ Accel:8 Loops:1024 Thr:1024 Vec:1
Speed.#*.........: 31518.8 MH/s

--------------------------------------------------------
* Hash-Mode 1500 (descrypt, DES (Unix), Traditional DES)
--------------------------------------------------------
Speed.#01........:  8683.3 MH/s (81.57ms) @ Accel:4 Loops:1024 Thr:1024 Vec:1
Speed.#02........:  8683.0 MH/s (81.42ms) @ Accel:4 Loops:1024 Thr:1024 Vec:1
Speed.#*.........: 17366.3 MH/s

------------------------------------------------------------------------------
* Hash-Mode 500 (md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5)) [Iterations: 1000]
------------------------------------------------------------------------------
Speed.#01........: 98506.4 kH/s (94.74ms) @ Accel:57 Loops:1000 Thr:1024 Vec:1
Speed.#02........: 99108.0 kH/s (93.82ms) @ Accel:57 Loops:1000 Thr:1024 Vec:1
Speed.#*.........:   197.6 MH/s

----------------------------------------------------------------
* Hash-Mode 3200 (bcrypt $2*$, Blowfish (Unix)) [Iterations: 32]
----------------------------------------------------------------
Speed.#01........:   303.5 kH/s (90.89ms) @ Accel:7 Loops:32 Thr:24 Vec:1
Speed.#02........:   308.2 kH/s (89.37ms) @ Accel:7 Loops:32 Thr:24 Vec:1
Speed.#*.........:   611.6 kH/s

--------------------------------------------------------------------
* Hash-Mode 1800 (sha512crypt $6$, SHA512 (Unix)) [Iterations: 5000]
--------------------------------------------------------------------
Speed.#01........:  1590.6 kH/s (85.39ms) @ Accel:4 Loops:1000 Thr:1024 Vec:1
Speed.#02........:  1591.5 kH/s (85.36ms) @ Accel:4 Loops:1000 Thr:1024 Vec:1
Speed.#*.........:  3182.2 kH/s

--------------------------------------------------------
* Hash-Mode 7500 (Kerberos 5, etype 23, AS-REQ Pre-Auth)
--------------------------------------------------------
Speed.#01........:  4580.3 MH/s (96.07ms) @ Accel:318 Loops:256 Thr:32 Vec:1
Speed.#02........:  4594.8 MH/s (95.43ms) @ Accel:318 Loops:256 Thr:32 Vec:1
Speed.#*.........:  9175.2 MH/s

-------------------------------------------------
* Hash-Mode 13100 (Kerberos 5, etype 23, TGS-REP)
-------------------------------------------------
Speed.#01........:  4397.2 MH/s (96.19ms) @ Accel:306 Loops:256 Thr:32 Vec:1
Speed.#02........:  4430.6 MH/s (95.33ms) @ Accel:306 Loops:256 Thr:32 Vec:1
Speed.#*.........:  8827.8 MH/s

---------------------------------------------------------------------------------
* Hash-Mode 15300 (DPAPI masterkey file v1 (context 1 and 2)) [Iterations: 23999]
---------------------------------------------------------------------------------
Speed.#01........:   582.1 kH/s (92.78ms) @ Accel:10 Loops:1000 Thr:768 Vec:1
Speed.#02........:   588.9 kH/s (91.72ms) @ Accel:10 Loops:1000 Thr:768 Vec:1
Speed.#*.........:  1171.0 kH/s

---------------------------------------------------------------------------------
* Hash-Mode 15900 (DPAPI masterkey file v2 (context 1 and 2)) [Iterations: 12899]
---------------------------------------------------------------------------------
Speed.#01........:   346.0 kH/s (86.45ms) @ Accel:6 Loops:1024 Thr:384 Vec:1
Speed.#02........:   347.8 kH/s (86.00ms) @ Accel:6 Loops:1024 Thr:384 Vec:1
Speed.#*.........:   693.8 kH/s

------------------------------------------------------------------
* Hash-Mode 7100 (macOS v10.8+ (PBKDF2-SHA512)) [Iterations: 1023]
------------------------------------------------------------------
Speed.#01........:  4359.1 kH/s (88.66ms) @ Accel:9 Loops:512 Thr:512 Vec:1
Speed.#02........:  4376.7 kH/s (88.21ms) @ Accel:9 Loops:512 Thr:512 Vec:1
Speed.#*.........:  8735.9 kH/s

---------------------------------------------
* Hash-Mode 11600 (7-Zip) [Iterations: 16384]
---------------------------------------------
Speed.#01........:  3174.4 kH/s (92.11ms) @ Accel:16 Loops:4096 Thr:512 Vec:1
Speed.#02........:  3172.7 kH/s (91.26ms) @ Accel:16 Loops:4096 Thr:512 Vec:1
Speed.#*.........:  6347.1 kH/s

------------------------------------------------
* Hash-Mode 12500 (RAR3-hp) [Iterations: 262144]
------------------------------------------------
Speed.#01........:   373.2 kH/s (10.80ms) @ Accel:18 Loops:16384 Thr:256 Vec:1
Speed.#02........:   376.7 kH/s (10.71ms) @ Accel:18 Loops:16384 Thr:256 Vec:1
Speed.#*.........:   749.9 kH/s

--------------------------------------------
* Hash-Mode 13000 (RAR5) [Iterations: 32799]
--------------------------------------------
Speed.#01........:   342.6 kH/s (91.85ms) @ Accel:6 Loops:1024 Thr:1024 Vec:1
Speed.#02........:   346.5 kH/s (90.81ms) @ Accel:6 Loops:1024 Thr:1024 Vec:1
Speed.#*.........:   689.1 kH/s

--------------------------------------------------------------------------------
* Hash-Mode 6211 (TrueCrypt RIPEMD160 + XTS 512 bit (legacy)) [Iterations: 1999]
--------------------------------------------------------------------------------
Speed.#01........:  2633.9 kH/s (91.69ms) @ Accel:6 Loops:500 Thr:1024 Vec:1
Speed.#02........:  2655.7 kH/s (90.74ms) @ Accel:6 Loops:500 Thr:1024 Vec:1
Speed.#*.........:  5289.6 kH/s

-----------------------------------------------------------------------------------
* Hash-Mode 13400 (KeePass 1 (AES/Twofish) and KeePass 2 (AES)) [Iterations: 24569]
-----------------------------------------------------------------------------------
Speed.#01........:   447.3 kH/s (80.56ms) @ Accel:5 Loops:1024 Thr:1024 Vec:1
Speed.#02........:   453.2 kH/s (79.52ms) @ Accel:5 Loops:1024 Thr:1024 Vec:1
Speed.#*.........:   900.6 kH/s

-------------------------------------------------------------------
* Hash-Mode 6800 (LastPass + LastPass sniffed) [Iterations: 100099]
-------------------------------------------------------------------
Speed.#01........:   114.2 kH/s (93.03ms) @ Accel:12 Loops:1024 Thr:512 Vec:1
Speed.#02........:   115.4 kH/s (92.09ms) @ Accel:12 Loops:1024 Thr:512 Vec:1
Speed.#*.........:   229.6 kH/s

--------------------------------------------------------------------
* Hash-Mode 11300 (Bitcoin/Litecoin wallet.dat) [Iterations: 200459]
--------------------------------------------------------------------
Speed.#01........:    45634 H/s (77.61ms) @ Accel:4 Loops:1024 Thr:1024 Vec:1
Speed.#02........:    45648 H/s (77.45ms) @ Accel:4 Loops:1024 Thr:1024 Vec:1
Speed.#*.........:    91281 H/s

Started: Tue Aug 19 16:48:42 2025
Stopped: Tue Aug 19 16:54:11 2025
Vis alle 208 linjerVis færre linjer

Absolut intet at klage over ved den opsætning. Den er hurtig, den er enkel, den er Bambino. Det, den til gengæld ikke er, er udnyttet. Når vi ikke er på opgaver, hvor det er relevant eller nødvendigt at knække noget, hvad laver den så? I begyndelsen lavede den ingenting. Det irriterede mig mere, end det burde, mest fordi jeg derhjemme havde en dårligere GPU til gaming, der blev brugt langt mere end disse to monster-GPU'er.

Det store skift

I begyndelsen af 2026 begyndte jeg at eksperimentere med open-weight-modeller på min GPU derhjemme, og jeg var ærligt talt ret imponeret. Det var ikke nogen Mythos eller GPT-Sol, men jeg syntes, det var virkelig fint, at denne (begrænsede) kapacitet nu var tilgængelig derhjemme. Så det logiske næste skridt for enhver er selvfølgelig at misbruge personalegoder, som adgang til kraftig hardware (selvom det at tage den med hjem til gaming var udelukket).

Der er mange grunde til at ville have en lokal LLM-maskine, og i vores situation er en af de vigtigste privatliv. Kundedata er værdifulde, ikke kun for vores kunder, men også for os. Hvad slags cybersikkerhedsvirksomhed ville vi være, hvis vi ikke kunne holde vores kunders data sikre? Selvom vi ikke laver nogen form for hosting, har vi rapporter, password-hashes og et hav af andre potentielt følsomme oplysninger. Selvom de fleste data kun opbevares midlertidigt, mens vi løser opgaver, ville det at uploade fortrolige eller følsomme data til tredjepartsværktøjer, som nævnte crackstation eller endnu værre frontier-LLM-laboratorier som Anthropic eller OpenAI, tage det ud af vores kontrol, så det er ikke engang en mulighed, vi har.

Et andet punkt er de der irriterende sikkerhedsspærringer. Det, vi laver, er et af de største røde flag for disse frontier-modeller. De vil ikke gøre det, jeg har brug for, lige ud af boksen.

Så vores løsning blev: frontier-laboratorier til udvikling, hvor det er muligt, og Bambino til alt andet.

Okay fint, men hvad laver den så?

Så, så, så meget.

Derhjemme brugte jeg OpenWebUI og Ollama som backend, da de virkede langt de mest plug-and-play, og det samme virkede til Bambino, da Ollama understøtter flere GPU'er og har et endpoint, der er kompatibelt med OpenAI's API.

Så selvom regnekraft er vigtig, når man knækker passwords, er VRAM konge til LLM-arbejde. Med hele (jeg ville virkelig gerne bruge det ord) 32GB VRAM pr. kort kan vi køre nogle ret kapable modeller med en masse kontekst, alt sammen hyggeligt placeret i VRAM.

Tag qwen3.8 ved Q8 som eksempel:

docker exec ollama ollama ps
NAME                ID              SIZE     PROCESSOR    CONTEXT    UNTIL
qwen3.8-27b:q8_0    8ca963fccb89    45 GB    100% GPU     245759     4 minutes
docker exec ollama nvidia-smi
| GPU Name | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util |
|=========================================+========================+=============|
| 0 NVIDIA GeForce RTX 5090 | 71% 51C P1 248W / 600W | 22195MiB / 32607MiB | 44% |
| 1 NVIDIA GeForce RTX 5090 | 68% 49C P1 274W / 600W | 23826MiB / 32607MiB | 48% |
+-----------------------------------------+------------------------+-------------+

Med denne konfiguration får vi en meget livlig chat med meget hurtig token-generering:

slot print_timing: id 0 | task 0 | n_gen = 392, tg = 32.72 t/s, tg_3s = 48.57 t/s
slot print_timing: id 0 | task 0 | n_gen = 539, tg = 35.97 t/s, tg_3s = 48.89 t/s
slot print_timing: id 0 | task 0 | n_gen = 686, tg = 38.12 t/s, tg_3s = 48.80 t/s
slot print_timing: id 0 | task 0 | n_gen = 833, tg = 39.66 t/s, tg_3s = 48.88 t/s
slot print_timing: id 0 | task 0 | n_gen = 980, tg = 40.81 t/s, tg_3s = 48.86 t/s
slot print_timing: id 0 | task 0 | n_gen = 1127, tg = 41.71 t/s, tg_3s = 48.88 t/s

Og endnu hurtigere token-evaluering:

prompt eval time = 1450.19 ms / 6288 tokens ( 0.23 ms per token, 4335.98 tokens per second)

At chatte er selvfølgelig én ting, men det alle vil have, er agentiske workflows, og jeg må sige, at agenterne altså arbejder og flyder. De 265k kontekst med en kapabel model har vist sig ret nyttige til at parse og samle data, samt til at bygge nye værktøjer, sætte infrastruktur op og strømline nogle interne processer omkring de temaer.

Et praktisk eksempel er at parse data fra filshares. Misforstå mig ikke, jeg elsker at bruge dage på at gennemgå hver eneste interessante fil, en virksomhed har samlet gennem årtier, i hånden (jeg græder ikke, det gør du), men den hastighed, Bambino kan gøre det med, får det bare til at virke tåbeligt. Det lader os også fokusere på mere nicheprægede og kreative opgaver og angrebsveje.

Så hvad er haken?

Ja, hvad er haken så. Ud over den indledende udgift er der ingen ulemper ved at udnytte den hardware, vi allerede har. Modellerne er heller ikke på frontier-niveau, men stadig meget kapable, og de bliver kun bedre.

På grund af det, et system som dette kan, bruger vi det heller ikke til noget offensivt eller automatiseret angrebsrelateret. Vi kan kun styre dets handlinger på vores egne systemer, så det er der, det bliver.

De der irriterende sikkerhedsspærringer er der stadig, selvom det er en del nemmere at overbevise dem om, at en vilkårlig kunde har accepteret det vilkårlige scope, og de samme modeller kan hentes helt uden spærringer mod lidt færre tokens/s, så det er reelt et ikke-problem.

I dag forsøger vi at bruge LLM'er, hvor de giver mening, og Bambino (det er ikke børnearbejde, det lover jeg) spytter tokens ud næsten i døgndrift, og jeg forventer, at vi som virksomhed får mere GPU-kraft, før vi får mindre.

Kilder

  • https://crackstation.net/
  • hashcat: https://hashcat.net/hashcat/
  • John the Ripper jumbo: https://github.com/openwall/john
  • https://openwebui.com
  • https://ollama.com/
← Alle artikler

Har du brug for hjælp, er vi her.

Fortæl os hvor I er, så hjælper vi med at finde næste skridt sammen.

Tal med os