w0men r00ting


  • noster
  • 671 Aufrufe 3 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • w0men r00ting

    Quellcode

    1. |=---------------------=[ The ultimate w0men r00ting pap3r]=------------------=|
    2. |=----------------------------------------------------------------------------=|
    3. |=-----------------------=[ xaitax | sticky bit | DocFX ]=--------------------=|
    4. |=----------------------------------------------------------------------------=|
    5. 1.) Vorwort
    6. 2.) Der Scan der zu r00tenden host-Ess
    7. 3.) Der Source fuer den Scan
    8. 4.) Der Host-ess r00t
    9. 5.) Das r00t Exploit incl. Description
    10. ----------------
    11. |- 1.) Vorwort |
    12. ----------------
    13. Hey Leute, hier endlich das langersehnte w0mens r00ting pap3r. Da eine
    14. unglaublich grosse Nachfrage besteht, wollen wir euch nun endlich mal einen
    15. grossen Einblick in die Welt des Frauen r00ten zeigen und geben. Leider koennen
    16. wir euch keine praktischen Beispiele geben, aber das schafft ihr auch mit
    17. unserer step-by-step Anleitung. ;) Es ist aus lauter Mitleid und Einsicht in
    18. euch von xaitax, DocFX und sticky bit in einer laengeren Phase, dank
    19. Urlaubsverzoegerungen(ok, ja es war Faulheit :P), in voller Hingabe geschrieben
    20. wurden. Aber kommt als Mann niemals auf die Idee nach dieser Anleitung bei
    21. jemandem Gleichgeschlechtlichen einzur00ten. ;) Das koennte braune Konsequenzen
    22. nach sich ziehen. Und das wollen wir dann doch nicht riskieren. Der sogenannte
    23. _Black Hole Bug_. Ein bekannter und immer weiter verbreiteter Vulnerability.
    24. --------------------------------------
    25. |- 2.) Der Scan der zu r00tenden Box |
    26. --------------------------------------
    27. Nun als erstes muessen wir uns ueberlegen bei welcher Box wir einr00ten wollen.
    28. Dazu muessen wir mehrere Vorgaenge vornehmen. Als erstes sollten wir in ein
    29. Board gehen, auch wenn wir da evtl. 10 Byte Eintritt bezahlen muessen. Aber da
    30. dort eine Menge Traffic herrscht, haben wir sicherlich mehr Erfolg als sonst wo.
    31. Als erstes muessen wir das Layout checken, denn erst dann koennen wir anfangen
    32. die Host-ess'en zu scannen. Wenn man sich mehrere Layer anschaut trifft man auf
    33. die diversesten Host-ess'en. Wir sollten uns genau umschauen in welchen
    34. Kategorien wir auf die meissten Host-ess'en treffen koennten. Moeglicherweise
    35. wirst du auch auf diverse *.mid Sounds aus allen Ecken treffen. Um auf das Board
    36. zu kommen werden wir das entsprechende POP6 Protokoll nutzen.
    37. ---------------------------------
    38. |- 3.) Der Source fuer den Scan |
    39. ---------------------------------
    40. /******************************************************************************/
    41. #include <communication.h>
    42. #include <clothes.h>
    43. #include <smilefaces.h>
    44. #include <money.h>
    45. #include <alkohol.h>
    46. #ifdef _HASCAR_
    47. #include <drivingskills.h>
    48. #else
    49. #include <bike.h>
    50. #include <oepnv.h>
    51. #endif
    52. /******************************************************************************/
    53. class Person {
    54. private:
    55. char[64] name;
    56. short unsigned int age;
    57. bool male;
    58. float PromilAlk;
    59. int Money;
    60. void WalkToLocation(CLocation aLocation);
    61. public:
    62. CLocation Location;
    63. CClothes clothes;
    64. int GetAge();
    65. int GetMoney(int count);
    66. void PrepareNight();
    67. bool ConnectBoard(CBorad board);
    68. }
    69. /******************************************************************************/
    70. void Person::WalkToLocation(CLocation aLocation)
    71. {
    72. int i;
    73. SetWalkDirectory(aLocation,Location);
    74. while (aLocation!=Location) {
    75. MakeStep();
    76. if (PromilAlk>1) {
    77. SetWalkDirection(WalkDirection+Random(PromilAlk));
    78. }
    79. }
    80. }
    81. /******************************************************************************/
    82. int Person::GetAge()
    83. {
    84. if (male) {
    85. return age;
    86. } else {
    87. switch (age) {
    88. case 15..18: return age+2;
    89. case 24..40: return age-3;
    90. else return age;
    91. }
    92. }
    93. }
    94. /******************************************************************************/
    95. int Person::GetMoney(int count)
    96. {
    97. Money-=count;
    98. return count;
    99. }
    100. /******************************************************************************/
    101. void Person::PrepareNight()
    102. {
    103. CClothes cl;
    104. TakeShower(this);
    105. DryHair(this);
    106. StyleHair(this);
    107. ShaveFace(this);
    108. me.clothes=SelectClothes(this,QUALITY_REALLY_GOOD);
    109. }
    110. /******************************************************************************/
    111. bool Person::ConnectBoard(CBorad board)
    112. {
    113. if (age<18) {
    114. if (!(SendMessage(MOMS_HANDLE,
    115. this,
    116. board.Handle,
    117. PLEASE_LET_ME_GO_TONIGHT) == IS_OK)) {
    118. return false; // shit happens.
    119. // hope it'll work tomorrow
    120. }
    121. }
    122. #ifdef _HASCAR_
    123. DriveToLocation(board);
    124. #else
    125. CBike b;
    126. if (b.CheckForPunktire) {
    127. GoByBike(Board);
    128. }else{
    129. if (Money>50) {
    130. GoByBus(Board);
    131. }else {
    132. WalkToLocation(Board);
    133. }
    134. }
    135. #endif
    136. while (Friends.Location!=Board) { Delay(10); }
    137. if (age<18) {
    138. try {
    139. Duck();
    140. Hide(BEHIND_FRIENDS);
    141. WalkToLocation(Board.Entrance);
    142. } except {
    143. return false; // fuckin keeper...
    144. }
    145. } else {
    146. WalkToLocation(Board.Keeper);
    147. Say("hi, isn't it a nice day today?");
    148. Smile();
    149. if (WaitForAnswer()!=ERR_TIMEOUT){
    150. Chat(Board.Keeper);
    151. // this is better for a good connection...
    152. }
    153. WalkToLocation(Board.Entrance);
    154. }
    155. if (!Pay(Board.Entrance)) return false; //not enugh money
    156. return true; // yeah! connected....
    157. }
    158. /******************************************************************************/
    159. int Main()
    160. {
    161. CBoard b;
    162. CPerson me; // ha! this is me!
    163. // ------------- you have to customize this part! -----------
    164. // if you dont have your own values the program properly crashes!
    165. me.name="Peter";
    166. me.age=18;
    167. me.male=true;
    168. me.PromilAlk=0;
    169. me.Location=Home;
    170. me.Money=100;
    171. b.Name="Metropol";
    172. // -----------------------------------------------------------
    173. me.PrepareNight();
    174. if (!b.Exists()) {
    175. return 1; // Err, board not found
    176. }
    177. if (!me.ConnectBoard(b)) {
    178. return 2; // Err, unable to connect
    179. }
    180. b.KeepClothes(me.UnncessarryClothes, me.GetMoney(1));
    181. me.Chat(Friends);
    182. me.WalkToLocation(Board.NextChair);
    183. me.LookAt(OBJECT_ALL);
    184. if (Similar(Answer,"What are u stearing at?")) {
    185. Say("oh, nothing. just wondering if the dj will ever play good musik");
    186. me.TurnAround();
    187. }
    188. if (!me.male) {
    189. return 3; // Err, femal objects are currently not supported
    190. }
    191. Board.AddBoy(me); // now i'm available
    192. int i;
    193. CPerson* Girl,MyGirl,tmp;
    194. MyGirl = NULL;
    195. for (i=0; i<Board.GirlCount; i++) {
    196. Girl=&Board.Girl[i];
    197. me.LookAt(*Girl);
    198. if (!(me.IsNiceView() && Girl->isBeautifoul)) {
    199. continue;
    200. }
    201. tmp=Board.GetNearestObject(Girl->Location);
    202. if (tmp->male) { // fuck, properly she is alredy busy :-(
    203. if (me.Braveness<EXTREME_LARGE) {
    204. continue;
    205. }
    206. }
    207. switch(Girl->Location){
    208. case(Board.Bar):
    209. CDrinks[2] c;
    210. me.WalkToLocation(Board.Bar);
    211. c = me.Buy(Bar.Drink,me.GetMoney(4),2);
    212. me.Give(*Girl,c[0]);
    213. me.Drink(c[1]);
    214. me.Chat(*Girl);
    215. me.Ask("Wanna dance?");
    216. if (!(Similar(Girl->Answer,"Sure!"))) {
    217. me.Say("My friend saied, u can dance so beautifoul i cant imagine...");
    218. me.Say("so, i want u to prove it...");
    219. if (Similar(Girl->Answer,"Fuck Up!")) {
    220. continue;
    221. }
    222. }
    223. break;
    224. case(Board.DancFloor): // just right
    225. break;
    226. case(Board.Toilet):
    227. // not yet implemented
    228. break;
    229. else // not yet implemented
    230. break;
    231. }
    232. // Girl->WalkToLocation(Board.DanceFloor); // :-( Err, NoAccess
    233. me.WalkToLocation(Board.DanceFloor);
    234. me.WaitForObject(*Girl);
    235. if (Girl->Location != me.Location) {
    236. continue;
    237. }
    238. me.Put(me.HandyNumer,Girl->HandPocket);
    239. me.Dance();
    240. me.LookAt(*Girl);
    241. me.Dance();
    242. if (Girl->LooksAtObject(me)) {
    243. me.Dance(*Girl);
    244. me.Whisper("u r so beautifoul");
    245. me.keepDancin();
    246. } else {
    247. continue;
    248. }
    249. me.Take(Girl->Hand);
    250. me.WalkToLocation(Board.Sofa);
    251. do {
    252. CDrinks[2] c;
    253. c = me.Buy(Bar.Drink,me.GetMoney(4),2);
    254. me.Give(*Girl,c[0]);
    255. me.Drink(c[1]);
    256. me.Chat(*Girl);
    257. } until ((me.PromilAlk>1) && (Girl->PromilAlk>1.5));
    258. me.Kiss(*Girl);
    259. MyGirl=Girl;
    260. }
    261. if (MyGirl!=NULL) {
    262. // and here u can do what ever u wanna do... cause u r the winner....
    263. } else {
    264. // loooser
    265. me.WalkToLocation(Home);
    266. }
    267. }
    268. -------------------------
    269. |- 4.) Der Hostess-r00t |
    270. -------------------------
    271. Um eine Host-ess zu rooten nuetzen wir das auf allen Host-essen implementierte
    272. POP6 Protokoll, normaler Weise ist dieses jedoch nicht unter Verwendung, bzw.
    273. fuer oeffentlichen Gebrauch freigegeben.
    274. Also was tun?
    275. Nun der Trick an der Sache ist folgender, ueber ein anderes Protokoll, welches
    276. auf der Host-ess fuer oeffentliche Kommunikation freigegeben ist, speisen wir
    277. Sequenzen ein, die den im Hauptprozessor verankerten Wunsch zur Erstellung von
    278. geforkten Prozessen (auch wenn wir die normalerweise nicht wollen!) und damit
    279. der effizientern Aufteilung der Rechenlast so wie dem Aufrecht erhalten der
    280. Berechnungen. Der Aufruf solcher Forking-Prozess-Einleitenden-Operationen ist
    281. ein im BIOS fast jeder Host-ess gespeichertes Feature, das standardmaessig
    282. ausgeliefert wird. Selbst wenn der Administrator einer Host-ess von der Gefahr
    283. dieses Features weiss, kann er es fast nie abstellen und oft nur schlecht
    284. eindaemmen.
    285. Und wie machen wir das jetzt genau?
    286. Anzunehmen ist, dass bei den meissten Hostessen das HTP (Human Talk Protocol)
    287. implementiert und oeffentliche Daemons frei gegeben sind. In der Praxis ist das
    288. zu 99% Prozent der Fall.
    289. Jetzt kommt die Arbeit. Wir muessen also nun unser "Opfer" genau ueberpfuefen.
    290. Das ist leider von Host-ess zu Host-ess sehr sehr unterschiedlich, einigen
    291. wenigen soll sogar der blosse Wunsch zum Protokollwechsel auf POP6 auf der HTP
    292. Ebene genuegen um den POP6 Demon zu starten und gut "geoelt" frei zu geben, auch
    293. wenn dies in der Praxis eher selten der Fall sein duerfte. Dies ist auch eine
    294. nicht unbedingt zu empfehlende Vorgehensweise, denn oft fangen
    295. Host-ess'en-interne Firewalls diese Anfrage ab und loggen euch als potenziellen
    296. r00t'er. Das dann jede Kommunikation mit der Host-ess geblockt wird sollte klar
    297. sein.
    298. Wichtig ist, dass ihr euch nun eine gute Strategie ueberlegt. Sendet dazu
    299. einfach ein paar unverbindliche Anfragen auf Files unterschiedlicher Typen,
    300. moeglichst breit gefaechert (tut so als seit ihr ein Mann von Welt-Weit-Web),
    301. und findet heraus auf welche Typen die Host-ess besonders arbeitsintensiv
    302. reagiert, leider ist es in der Praxis oft schwer zu erkennen, denn einige Typen
    303. reagieren auf gewuenschte Anfragen mit schnellerer Berechnung, andere leider mit
    304. langsamerer Berechnung, da sie noch einige Pruefroutinen dran haengen. Aber der
    305. Einsatz eines Host-ess'en Scanners (Listing 0.0) sollte hier Klarheit bringen.
    306. Habt ihr einen Filetyp erkannt auf den eure Wunsch Host-ess spezialisiert ist,
    307. solltet ihr Interesse an diesem Typ zeigen und evtl. auch Files diesen Typs
    308. anbieten. Werdet dabei aber nicht einseitig, auch ein paar andere Filetypen, oft
    309. verwendet wird z.B. *.joke, sollte immer dabei sein, um ein einfrieren der
    310. sowohl fuer eure Maschiene als auch die des Objektes arbeitsintensiven Prozesse
    311. zu verhindern. Auch hier sollte der Scanner Klarheit geben koennen wie
    312. die Auslastung auf dem Host gerade ist, und ob ihr noch Einen drauf legen
    313. koennt/muesst.
    314. Auch ist u. U. der Einsatz anderer Protokolle ausser dem HTP notwendig, aber das
    315. solltet ihr inzwischen von eurer Host-ess wissen.
    316. Bei manchen Host-ess'en kann der Anteil der zu sendenden Files allerdings derbe
    317. in die Resourcen gehen, besonders wenn es eine hartnaeckige Host-ess ist oder
    318. der Admin hinterlistig ist. Vom verschicken von Hardware raten wir ab, das
    319. fuehrt oft zu nichts und ist nur dazu da eure Maschiene auszuschlachten, ihr mue
    320. sst hier halt abwaegen was was wert ist. Stellt die Host-ess nun selbststaendig
    321. Anfragen an eure Daemons ist es eigentlich schon fast geschafft. Wir haben jetzt
    322. eine Layer3 bis Layer4 Kommunikation mit der Host-ess machen koennen. Dieses ist
    323. allerdings noch nicht das was wir wollen, denn wir wollen ja Layer2 oder gar 0.
    324. ;)
    325. Jetzt kommt der in Listing 0.0 gezeigte Exploit zum Einsatz, vorher ist es
    326. allerdings noch ratsam abzuwarten bis alle anderen Verbindungen der Host-ess
    327. geschlossen (evtl. sind da auch grad andere am r00ten, das koennte boese enden.
    328. Vorher checken!) sind und ihr euch in einer gesicherten Umgebung befindet, denn
    329. das erhoeht die Erfolgschancen, aber wer'n Abenteuer sucht, bitte!
    330. Dieser Exploit, wohl gemerkt nur eine Basis Version schickt nun unter HTP
    331. Sequenzen an die Host-ess, welche normalerweise ungefiltert in die CPU gehen und
    332. im Hintergund von oben erwaehnten BIOS-Feature ueberwacht werden.
    333. Ob das BIOS nun auf einen solchen Arbitary-Code reagiert haengt von den
    334. Sequenzen ab und auf welchem Layer der Kommunikation ihr euch befindet. Um hier
    335. gute Strategien zu entwickeln bedarf es viel Erfahrung, welche Sequenzen was
    336. bewirken koennen. Springt das BIOS auf den Code an, so wird es im Hauptprozessor
    337. den POP6 einspeisen und euch auf den Pprotokollwechsel aufmerksam machen. Der
    338. Exploit verbindet euch nun mittels POP6 auf den Port 1 (bei f Typen!) und voila,
    339. ihr seid drinnen! Nach ein wenig hin und her koennt ihr dann euer Zeug da
    340. lassen, mehr oder weniger, denn um die leider weit verbreiteten geforkten
    341. Child-Prozesse zu vermeiden benutzt der Exploit einen Schutz-Mechanismus, der
    342. diese und noch andere Nebeneffekte verhindert, allerdings ist der ultimative
    343. Zugriff damit nicht moeglich. Naeheres dazu aber in der Anleitung des Exploits.
    344. Ob ihr nun eine Layer0 oder nur eine Layer1 oder 2 Verbindung hattet ist schwer
    345. zu sagen, auch hier kommt es wieder auf die Erfahrung an, manche BIOS'e in den
    346. Host-ess'en sind so eingestellt, dass sie einen solchen Zugriff nur auf Level0
    347. zulassen, manche auch auf 1 oder 2 ...
    348. Solltet ihr eine Layer1 und Layer0 Verbindung erreicht haben, d.h. ihr werdet
    349. danach getrustet und je nach Host-ess evtl. der einzige Kommunikationspartner
    350. fuer POP6, haben wollen koennt ihr versuchen die I-Love-You Backdoor einzubauen,
    351. naeheres dazu in Listing 0.0. Bedenkt aber dabei, dass ihr dann evtl. nur noch
    352. fuer POP6 Kommunikation mit dieser einen Host-ess zu gebrauchen seid, denn
    353. manche Host-ess'en reagieren mit zuruecksetzen der Verbindung auf Layer3 oder
    354. gar hoeher, wenn sie eine POP6 Kommunikation von euch zu anderen Host-essen
    355. heraus finden. Auch ist diese Backdoor nur auf der HDD gespeichert und wie das
    356. mit Magnetspeichern so ist, da ist leider nichts auf Dauer.
    357. -------------------------------------------
    358. |- 5.) Das r00t exploit incl. Description |
    359. -------------------------------------------
    360. #!/usr/bin/perle
    361. use Con::Con;
    362. use Socket;
    363. $your_bunny = 'na wer wohl?';
    364. $geschwaetz = 'was sie halt hoeren will...';
    365. socket (F, PF_INET, WRD_STREAM, getprotobyname('htp'));
    366. connect (F, sockaddr_in(4, inet_aton($your _bunny)));
    367. while ($f !~ /switching protocol: pop6/){
    368. send (F, "$geschwaetz\r\n\") || die;
    369. $f = <F>;
    370. }
    371. close F;
    372. socket (F, PF_INET, LIQ_STREAM, getprotobyname('pop6'));
    373. connect (F, sockaddr_in(1, inet_aton($your_bunny)));
    374. &Con::Con::DOM(1);
    375. send (F, "~<)~<)~<)~<)~<)~<)~<)~<)~<)~<)~<)~<)~<)~<)~<)~<)~<)~<)") || die;
    376. close F;
    377. print "\a";
    378. exit;
    379. # Zur Benutzung:
    380. # Passt als erstes die Variablen in Zeile 6 und 7 auf eure Host-ess an.
    381. # $your_bunny bekommt den Host-ess'ennamen des zu rootenden Objektes,
    382. # $geschwaetz solltet ihr dem zu rootenden Objekt anpassen. Bei vielen
    383. # Maschienen tut es die Zeichenfolge 'r0man+!5ch3523ux' aber das kann
    384. # stark varieren. Fuer manche Objekte, z. B. SM-Host-essen, kann es sogar
    385. # noetig sein, statt der ueblichen ASCII Zeichenfolgen handfeste Bitwerte
    386. # mit BEAT-Sequenzen zu senden und ggf. ein anderes Protocol fuer den
    387. # ersten Sendevorgang zu verwenden. Bei gut gesicherten Maschienen kann es
    388. # vorkommen, das eine einzige Zeichenfolge nicht ausreicht, sondern diese
    389. # immer wieder, evtl. sogar nach Challenge-Response Verfahren neu generiert
    390. # werden muss. Ihr solltet also ueber eure Host-ess Bescheid wissen und
    391. # immer bedenken, dies ist nur ein Basic-X-Ploit!!!
    392. #
    393. # Wichtig ist noch der Import des Con::Con::DOM-Moduls in Zeile 3 und
    394. # der Aufruf seiner Subroutine DOM in Zeile 21.
    395. # Dieses Modul ermoeglich eine sichere Verbindung. Dies dient vor allem
    396. # dazu das evtl. unerwuenschte Loggen zu verhindern, bei dem u. A.
    397. # Forking-Prozesse entstehen koennen, die euch Anhand eindeutiger
    398. # DNS-Lookups als r00ter enttarnen koennen, und dann koennt ihr euch
    399. # ewig und drei Tage um so 'nen scheiss Child-Prozess kuemmern.
    400. # Ausserdem schuetzt euch diese Routine vor evtl. installierter Malware,
    401. # die sich versuchen wird auf eurer Maschiene zu installieren.
    402. # Nachteil ist allerdings, dass der Sandkasteneffekt der durch die Routine
    403. # entseht. D. h. ihr bekommt nur einen virtuellen Schreibzugriff.
    404. # Bei Maschienen mit denen ihr oeffters kommunizieren wollt solltet ihr
    405. # daher unbedingt einen PILL-Driver installieren, und den Aufruf
    406. # dieser Routine entfernen. Aber Vorsicht, leider sind nicht alle Host-ess'en
    407. # mit diesem Treiber kompatibel und bevor ihr die ganze Maschiene kaputt
    408. # macht...
    409. #
    410. # Naja was gibts noch, ach ja, dies ist ein X-Ploit fuer Typ f Host-essen,
    411. # Wer es fuer Typ m Host-essen (es gibt keinen Port 1, also leicht zu
    412. # erkennen) verwenden will sollte sich vorher nochmal in dieses Thema genau
    413. # einlesen und den X-Ploit ggf. anpassen.
    414. #
    415. # OK, also nochmal dran denken, das ist nur ein Basic-X-Ploit und kackt
    416. # uns nicht an wenn es nicht den gewuenschten Effekt hat.
    417. #
    418. # Also dann wenn ihr das alles begriffen habt und ihr euch sicher seid,
    419. # dann ruft dieses Skript, wie es auf eurem OS ueblich ist, auf und feucht
    420. # froehliches r00ten!
    421. # X-Ploit ggf. anpassen.
    422. -------------
    423. |- Authors: |
    424. -------------
    425. -| xaitax - [email]ah@primepage.de[/email]
    426. -| sticky bit
    427. -| DocFX - [email]DocFX@gmx.de[/email]
    Alles anzeigen