Coder Schluecht: Mech vs Dat VNC Guy

В dësem Blog Zimlech e puer Programméierergeschichten goufen publizéiert. Ech erënnere mech gär un meng al domm Saachen. Gutt, hei ass eng aner esou Geschicht.

Ech hunn fir d'éischt u Computeren interesséiert, besonnesch Programméiere, wéi ech ongeféier 11 Joer al war. Um Ufank vum Lycée bоEch hunn de gréissten Deel vu menger Fräizäit mat mengem C64 verbruecht a BASIC geschriwwen, dunn de schlechte Code mat enger Schéier erausgeschnidden. Ech maachen de Geck net, Schéier.

No der Schoul (ronn am Alter vu 16) gi britesch Kanner normalerweis op d'Uni, wou se wielen dräi oder véier Fächer ze studéieren ier se op d'Uni goen. Wéinst menger Léift fir d'beige Këscht an d'Bandrecorder doheem, hunn ech décidéiert datt d'Informatikstudien op der Uni déi richteg Wiel war.

Ech hunn de Cours méi genoss wéi ech erwaart hunn; do hunn ech de Pascal an d'Delphi fir d'éischt begéint.

An de Pausen tëscht de Klassen konnten d'Schüler op all fräi Maschinn am Computerraum schaffen. Stellt Iech vir: e risege Raum, entworf fir ongeféier honnert Leit, mat Reihen vun Dëscher gefëllt mat Maschinnen, wéi déi wou de Monitor op der System Eenheet steet. D'Fans hummeren stänneg, Mausbäll schwammen op den Dëscher, stoppen net fir eng Sekonn. Et gëtt e komeschen Geroch an der Loft, wéi wann 50-100 hormonell Teenager periodesch änneren fir Honnerte vu Pentium III Chips ze killen.

Trotz de Gesondheetsrisiken hunn ech gär um Computer gesat, wann ech eng Fräiminutt hat.

Den Administrateur am Raum war e kuerzen, mëttelalterleche Mann, dee fir dës Roll gewielt gouf wéinst sengem onsatzbare Wonsch e béisen Diktator ze ginn. Ech huelen un. Op Pflicht ass en Understatement; de Guy huet seng Aarbecht wierklech gär. Hie krut d'Aufgab fir d'Uerdnung ze halen, sou datt keen de Schoulcomputer fir eppes Onpassend benotzt.

Bis haut seet meng Intuition mir datt de Bonus vum Admin direkt vun der Unzuel vun de Studenten ofhänkt, déi hien mat der Hand gefaangen huet an aus dem Computerraum eskortéiert. Ech si ganz sécher datt dësen Typ seng Hypothéik fréi bezuelt huet.

Hie souz am wäitsten Eck vum Computerraum un engem Eckdësch. An et war sécher ze iwwerhuelen datt seng Fruchtbarkeetsmonitore e Wee fonnt hunn fir mat enger beandrockend kuerzer Schwangerschaft ze reproduzéieren, et waren esou vill vun hinnen. Et kann ee sech nëmme froen, ob hien wierklech Zäit hat fir se all ze halen. Natierlech maachen ech de Geck ... hunn ech gesot datt hien seng Aarbecht ganz eescht geholl huet?

Deemools war de Computernetzwierk Windows 2000. Ech hu séier entdeckt datt all Kéier wann ech an de System ageloggt sinn, e Skript lancéiert gouf, deen de VNC-Server vum Administratorkonto fir Remote Zougang zum Desktop spezifizéiert huet. Wann ëmmer dësen Typ op Iech wollt spionéieren, hie géif direkt op Är Maschinn verbannen a kucken. Et war grujheleg, an elo, datt ech doriwwer denken, wahrscheinlech illegal.

Nodeems ech meng Zänn op BASIC an C64 ofgeschnidden hunn, hunn ech elo an C geschriwwen an och e bëssen C++. Ech war deemools nach ganz interesséiert fir d'D Sprooch, déi e puer Mängel vun C++ korrigéiert huet, wéi ech et deemools gesinn hunn.

Ech sinn fréier an de Computerraum gaang fir eppes Neies op D ze liesen oder mam Digital Mars D Compiler ze spillen. Heiansdo, wärend ech ofgelenkt gi war fir un déi grouss Zukunft vum D ze denken, hunn ech C Code geschriwwen fir aner Win32 Programmer duerch hir Fënster ze hacken geréiert.

An de gudden alen Deeg vun der Win32 Programméierung war e Fënsterhandtak ze fannen déi einfachst Method fir aner Programmer ze hacken. Natierlech hunn all GUI Programmer op Windows eng Fënster, och wann et net um Bildschierm erschéngt. Andeems Dir e Programm schreift fir e Grëff op en anere Prozess ze recuperéieren (wesentlech e Link op et), kënnt Dir Messagen un et schécken. Dëst erlaabt e puer grondleeënd Operatiounen wéi eng Programmfenster ze verstoppen / ze weisen, souwéi wierklech cool Saachen wéi e Prozess ze forcéieren fir eng arbiträr DLL a säi Gedächtnisraum ze lueden an de Code auszeféieren. No der DLL-Injektioun huet de Spaass ugefaang.

Am éischte Mount an en halleft huet dësen Detektiv mech net vill gestéiert; et huet nëmmen eemol oder zweemol mam VNC Server op menger Maschinn verbonnen. Awer eng bestëmmte Sessioun huet vläicht säin Interessi gepickt. Ech schreiwen e puer C Code fir eng verstoppen Minesweeper Fënsteren (ouni hinnen zougemaach) fir eng maachen et méi einfach an Klass ze spillen, wann ech gemierkt, datt déi wäiss VNC icon am System Schacht schwaarz gouf. Dëst bedeit datt hien mech elo kuckt.

Ech hu weider codéiert wéi gewinnt, probéiert hien ze ignoréieren. Mëttlerweil huet d'Maschinn ugefaang ze luesen, a probéiert de maximalen Frame-Taux op ee vun de sëlleche Monitore am Eck vum Raum ze iwwerdroen. Windows huet bal opgehalen ze reagéieren, wann meng Gedold opgaang ass, hunn ech mech ausloggen a fir den Dag fäerdeg.

Bei de spéidere Visiten am Computersall huet de Colombo sech bal all Kéier interesséiert fir dat wat ech gemaach hunn. No ongeféier der véierter Kéier hunn ech decidéiert: Ech muss eppes doriwwer maachen.

Ech ginn zou, datt eng raisonnabel, rationell Persoun dëst Thema einfach direkt mat him oder sengem Patron hätt kënnen opwerfen. Ech hunn awer ëmmer an d'Versuchung opginn a mech séier geschwat fir eng komplett aner Strategie unzehuelen.

- Dir kënnt näischt ouni dëse VNC Server maachen! — Ech hu mer e puer mol roueg an entscheedend gesot.

Et war néideg VNC ëmzebréngen.

Ech hunn ugefaang mat grousse Gruppe vu Studenten an de Computerraum ze goen an sou wäit wéi méiglech vum Eck mat de Monitore ewech ze sëtzen. Dëst huet eng Zäit laang geschafft an huet mir Zäit fir Iddien ze testen.

Mäin éischte Versuch, ech mengen, Dir wäert d'accord sinn, war zimlech schwaach. Riets-klickt op der VNC Ikon am System Schacht, Ech gesinn e Menü mat der magescher Buschtawen EXIT. Leider goufen d'Bréiwer a groe Konturtext geschriwwen. Den Administrator huet de Menü "Exit" duerch de Group Policy Editor deaktivéiert. Ech hu probéiert de Prozess vum Task Manager ëmzebréngen, awer selbstverständlech war et fir mech onsichtbar, well et ënner engem aneren, méi privilegiéierte Kont leeft. Et huet net geklappt.

D'VNC Server leeft op TCP port 5900, Ech erënneren. Mäi nächste Plang war korrupte Päck op dësen Hafen ze schécken fir et ze crashen.

Ech hunn op d'mannst e puer Deeg mam Protokoll verbruecht, verschidde Forme vu gutt strukturéierte Knascht op den Hafen 5900 geschéckt an gehofft datt et géif briechen. Um Enn huet dat och net geklappt.

Ech hat schonn ugefaang ze denken, datt ech dës Saach net lass ginn, wéi et op eemol opgaang ass: do muss eng Fënster sinn! Mir mussen et weisen. Vläicht wäert et e flotte saftleche "Mute" Knäppchen hunn, deen ech gutt benotze kann!

Ech hunn meng elo bal perfekt C Code gelaf fir de Grëff an d'Haaptfenster vun engem anere Prozess ze fannen - a sécher genuch, VNC gouf fonnt. Ech hu mech inspiréiert gefillt wann meng Fanger getippt hunn WM_SHOWWINDOW. Probéiert ze roden wat ech virun mir gesinn hunn?

Näischt!

Elo war ech virwëtzeg ... et hat eng Fënster, awer et ignoréiert meng Messagen. Ech hunn mäi Code duebel iwwerpréift fir sécher ze sinn datt et funktionnéiert. Getest et op e puer anere Prozesser an et huet super geschafft. Ech probéiert aner Messagen op d'VNC Fënster schécken, an nach näischt.

An dunn ass et mech erëm opgefall!

Dank der ganz décke d'Buch Charles Petzold Ech hunn virsiichteg studéiert wéi Win32 Prozesser am System funktionnéieren. All Win32 Applikatioun huet eng Fënster souwéi eng "Message Queue". Messagen ausgeléist duerch Benotzerinteraktioun, souwéi Messagen, déi vu Windows selwer geschéckt ginn, kommen an enger Schlaang, an d'Applikatioun selwer entscheet wéi se se veraarbecht ginn.

Net ganz interessant u sech. Awer wéi ech gemierkt hunn datt eng grouss genuch onveraarbechtte Messageschlaang als Heuristik fir de Window Process Manager gehandelt huet fir an engem hängenden Prozess z'intervenéieren, hunn ech ugefaang pure Serotonin ze schweessen.

Ouni eng Sekonn ze verschwenden, sinn ech zréck op mäi C Code, virbereet fir en anere Message an d'Haapt VNC Fënster ze schécken WM_SHOWWINDOW. An engem Zyklus. Éiweg. Also, vill Messagen. WM_SHOWWINDOW, déi ech elo wosst VNC géif probéieren komplett ze ignoréieren ... op seng Gefor.

Ech kompiléiert a lafen 4KB vum meeschte Fräiheetsliewende Code vu mengem Liewen. No ongeféier dräi Sekonnen huet Windows gemellt datt de Prozess vncserver.ехе äntwert net, an huet eng Offer gemaach, déi ech einfach net refuséieren konnt:

Wëllt Dir dëse Prozess fäerdeg maachen?

HELL JO!

Loosst mech zouginn datt ech de Rescht vum Dag onendlech zefridde mat mir selwer war.

No e puer Stonne fir meng nei Supermuecht ze verdauen, hunn ech decidéiert wéi ech se benotze géif. Et war ze einfach just d'Sessioun direkt virun him ëmzebréngen. Ech hat eng besser Iddi - komplett verschwannen.

no Feierdaf mat Socket programméiere Ech hu gemierkt datt ech Code schreiwen kéint deen zwou Saache maache géif. Et wäert fir d'éischt den nei befreit TCP Hafen 5900 besetzen, virdru besat vum onbekannte VNC Serverprozess. Da wäert et eng nei TCP Verbindung zu der VNC Server vun der spezifizéierter Maschinn schafen. De Code wäert einfach all d'Donnéeën tëscht den zwee Sockets Proxy, a Columbo wäert mengen, datt hien mech verbënnt, wann tatsächlech wäert hien zu engem komplett anere VNC Server Verbindung.

Mäi Code wäert als geheime Bréck handelen tëscht mir an enger anerer aarmer Séil vu menger Wiel. Et war wonnerbar.

Ech hunn direkt ugefaang meng falsch VNC Bréck ze schreiwen. Columbo verbonne fir mech puer mol, mee ech weider virun him ze programméieren. Ech sinn zur Conclusioun komm datt hien keng Ahnung hat wat ech maachen, obwuel ech offensichtlech Saache geschriwwen hunn wéi Portnummeren a Kommentarer wéi // Прощай, жуткий шпион VNC.

No e puer Deeg konnt ech de Code net richteg kréien. Ze maachen Themen verschlechtert, Ech schaffen bal kontinuéierlech mat der schwaarz VNC icon am System Schacht. Wärend et verbonne war, konnt ech den Hafen net fräiginn fir mäi Code ze testen.

Wann ech dat dann gewosst hätt netcat!

Um Enn hunn meng Nerve Plaz ginn; ech war schliisslech en ongedëlleg 17 Joer ale Guy. Kuckt de wäisse VNC-Serverikon erëm schwaarz ginn, hunn ech gefaart, den urspréngleche Code opgemaach deen d'Messageschlaang populéiert huet an et virun sengen Ae gelaf. Ech hunn souguer e puer Sekonnen gewaart ier ech geklickt hunn End Process, just fir sécher ze stellen datt hien et gesinn huet.

Wann dee Knäppche gedréckt huet mech net ganz iwwerzeegt datt et et wäert war, da sprang hien hannert senger Festung vu Monitore fir mech séier unzegoen an mech aus dem Raum z'erhalen huet sécherlech gemaach.

Als Resultat gouf ech aus dem Netz fir zwou Wochen verbannt. Eng fair Strof, hunn ech geduecht. No ongeféier dräi Wochen ass de VNC-Server aus Bootskripter verschwonnen an ass ni soss anzwousch opgetaucht. Ech wousst ni ob mäi Tëschefall eng Roll an dësem gespillt huet oder net, awer et huet mäi Plang komplett ruinéiert fir fantastesch räich ze ginn andeems ech meng VNC Pistoul un depriméiert Studenten a College Computer Halen am ganze Land verkaaft hunn.

Source: will.com

Setzt e Commentaire