Merkwürdiger EMail-Spam seit ein paar Tagen



  • Primzahlen alleine bringen nichts. Denn die Adresse muss keine Primzahl sein, und dann ist die Zerlegung in Key und Adresse mehrdeutig.

    Ist der secretKey immer der gleiche?

    Oder muss man ihn entsprechend zur Adresse generieren?



  • Sone schrieb:

    Primzahlen alleine bringen nichts. Denn die Adresse muss keine Primzahl sein, und dann ist die Zerlegung in Key und Adresse mehrdeutig.

    *patsch* //edit: Nicht, weil Du unrecht hattest, sondern weil Du es so unbedenkt behauptest.
    weiter bitte



  • Man kann die Frage es auch etwas formaler stellen:
    f_{i,m} : \mathbb{N\_0}\to\mathbb{N\_0},\, n\mapsto n*i\mod m
    Für welche i,m ist die Abbildung surjektiv auf Intervall [0,m-1] ?
    (m im konkreten Fall 2322^{32})



  • Sone schrieb:

    Ist der secretKey immer der gleiche?

    Ja.

    Sone schrieb:

    Oder muss man ihn entsprechend zur Adresse generieren?

    Nein.

    Es kann natürlich ein Befehl geflooded werden übers Botnetz, daß der key ab jetzt durch einen neuen ausgetauscht wird. Muss uns aber hier nicht kümmern. Wochenlang gilt ein bestimmter key.

    Wochenlang ist maildata*key=angriffsip

    es sollte sichergestellt sein, daß niemals maildata1*key==maildata2*key, wenn maildata1!=maildata2. Damit nicht falsche Server angefunkt oder angegriffen werden. Damit die Polizei mehr zu suchen hat (optimalerweise den gesamten Suchraum aller IP-Adressen, ein Bißchen weniger ist auch ok, halb so viele schenken wie ungern. Nir primzahlige IPs wären zu wenig). Außerdem sollte key aus einer möglichst großen Menge genommen werden können, damit die Polizei nicht die sagen wir mal nur 100000 sinnvollen keys austesten kann. Was ist die größte Menge der keys bei diesen Spielregeln?



  • Das gefällt mir besser.

    Für welche i,m ist die Abbildung surjektiv auf Intervall [0,m-1] ?

    Die Frage ist also, ob jeder Wert, der bei dem Modulo vorkommen kann, auch vorkommt.

    Also ein offensichtlicher Fall ist i=1.

    i=2 funktioniert für ungerade m.

    Und wenn ich mehr nachdenke, stelle ich fest: i und m dürfen keine gemeinsamen Teiler haben. Soviel sehe ich durchs ausprobieren. Oder?

    Edit:

    maildata*key=angriffsip

    Ach, so herum!



  • supi weiter!



  • Also Base64 ist das wohl eher nicht, es sind schließlich nur Kleinbuchstaben.
    Eine IP Adresse und ein bisschen mehr könnte aber trotzdem in die 9 Zeichen reinpassen.



  • Ohne die Analyse in Frage zu stellen:

    Warum sind die Mails nicht in dem Stil:

    preisausschreiben@yahoo.com
    Betreff: Sie haben gewonnnen
    Body: Ihr Los mit der Nummer 79123496513691234 hat in unserem Preisausschreiben 11256125 € gewonnen. Geben Sie ihre Banknummer an und holen Sie ihren Gewinn bis zum 234516. ab!
    Anhang: Bild mit geheimer Botschaft in jedem 17. Pixel

    Das wäre doch viel weniger auffällig.



  • spimat schrieb:

    Ohne die Analyse in Frage zu stellen:

    Warum sind die Mails nicht in dem Stil:

    preisausschreiben@yahoo.com
    Betreff: Sie haben gewonnnen
    Body: Ihr Los mit der Nummer 79123496513691234 hat in unserem Preisausschreiben 11256125 € gewonnen. Geben Sie ihre Banknummer an und holen Sie ihren Gewinn bis zum 234516. ab!
    Anhang: Bild mit geheimer Botschaft in jedem 17. Pixel

    Das wäre doch viel weniger auffällig.

    Ein Versuch, an allen Bayes-Filtern herumzukommen.
    "Preisausschreiben" kennen sie.

    Insbesondere mit HTML-Mails und drinne schlimm codierten Inhalten, werden viele Spamfilter nicht gegen 3 Zeichen sperren können, zumal sie wöchentlich oder so wechseln. Dagegen müßte gegenprogrammiert werden, das dauert Jahre. Ist nicht nur je ein Update der Virenerkennungsdatei.



  • Edit: Der Beweis war tatsächlich unvollständig, da habe ich zu früh abgeschickt.

    Das heißt, wenn i (oder m) prim ist, dann gilt das ebenfalls.

    Wieso aber ist die Surjektivität deiner Funktion so wichtig?

    spimat schrieb:

    Das wäre doch viel weniger auffällig.

    Dass diese Mails eine geheime Botschaft enthalten, ist ein Hirngespinst, dass niemals ernst gemeint war.



  • Hier mein Beweis:

    Die multiplikativen Moduli von i und m seien definiert als die Menge der Werte die ni mod mn * i \ mod \ m für alle nN0n \in \mathbb{N}_0 annehmen kann.
    Es ist zu zeigen, dass die multiplikativen Moduli alle Werte in [0, m) enthalten, wenn m und i teilerfremd sind.

    Nun sei k die kleinste Zahl, sodass sie durch m und i teilbar ist. Wenn es einen gemeinsamen Teiler p > 1 gibt, den i und m besitzen, dann ist k=mipk = \frac{m * i}{p}.

    k ist (per Definition) nach 0 das kleinste Vielfache von i, welches durch m teilbar ist. Das heißt: es ist (nach 0) ebenfalls das kleinste Vielfache von i, für welches k mod m=0k \ mod \ m = 0 gilt.

    Das heißt, alle Zahlen in [0, k), die ein Vielfaches von i sind, erzeugen bezüglich m alle unterschiedliche Moduli, und die Menge dieser Moduli bilden die multiplikativen Moduli.

    Damit ist die Größe der Menge der multiplikativen Moduli gegeben: ki=mp\frac{k}{i} = \frac{m}{p}. Da diese kleiner ist als m, und die Menge der multiplikativen Moduli also weniger Elemente hat als das Intervall [0, m), gibt es Elemente in [0, m) die sie nicht enthält.
    Wenn p aber 1 ist (weil m und i teilerfremd sind und das ihr größter Teiler ist), dann enthält die Menge genau m (unterschiedliche) Zahlen. Da nur Werte in [0, m) vorkommen können, kommt damit jeder Wert in [0, m) in der Menge der Moduli vor.
    QED (quod est dubitandum)

    Beispiel: Für i=4 und m=6 ist die Menge der multiplikativen Moduli
    {4, 2, 0}.
    k ist 462=12\frac{4*6}{2} = 12, die Größe der Menge ist 62=3\frac{6}{2}=3.
    Da die Größe der Menge (3) kleiner ist als 6, enthält sie nicht alle Elemente von {0, 1, 2, 3, 4, 5}.
    Dasselbe ist für 5 und 6 aufzuschreiben, jedoch wird man feststellen dass die Menge der Multiplikativen Moduli 6 Elemente enthält.



  • yahoooooooo schrieb:

    volkard schrieb:

    Würde reichen, um für ein Botnet neue Commands mitzuteilen, 4 Bytes IP-Adresse und noch eins als Befehl.

    Commands per Mail an fremde Adressen? 😕
    Dafür müssten ja erstmal Zugangsdaten zu vielen Mailaccounts verfügbar sein und bei jedem Passwörtwechsel schließt sich ein Kanal.

    Nicht unbedingt.
    Theoretisch könnte der Bot den gesamten IP Datenverkehr des Hosts mitlauschen. Wenn der Host dann über z.B. POP die Mail runterlädt, dann kann der Host darin relativ einfach Absender, Subject und Body ausmachen. Und wenn die "passend" erscheinen (alles Strings aus 3 Kleinbuchstaben), dann dekodiert er sie und macht damit was auch immer er machen soll.
    Mit etwas mehr Aufwand wäre es vermutlich sogar möglich die drei Strings aus HTML Seiten der grösseren Webmail Provider rauszuziehen.

    ----

    Was das Format der Mails angeht: die "Payload" der Mails scheint aus drei Strings zu bestehen:
    * Der Teil der Sender-Adresse vor dem "@yahoo.com"
    * Subject
    * Body
    Alle drei Strings sind drei Zeichen lang und bestehen ausschliesslich aus Kleinbuchstaben. Keine Ziffern und keine Grossbuchstaben.
    Sieht für mich nicht nach Base64 aus. Würde eher auf ne selbst-erdachte Kodierung tippen.
    Und 9 Kleinbuchstaben sind etwas mehr als 42 Bit Information - reicht also locker für ne IPv4 + Prüfsumme oder sowas.



  • P.S.: Volkard, ich weiß immer noch nicht was ich studieren soll, und ich muss mich relativ bald entscheiden (in genau einem Jahr muss es feststehen).



  • Sone schrieb:

    Hier mein Beweis:

    Die multiplikativen Moduli von i und m seien definiert als die Menge der Werte die ni mod mn * i \ mod \ m für alle nN0n \in \mathbb{N}_0 annehmen kann.
    Es ist zu zeigen, dass die multiplikativen Moduli alle Werte in [0, m) enthalten, wenn m und i teilerfremd sind.

    Nun sei k die kleinste Zahl, sodass sie durch m und i teilbar ist. Wenn es einen gemeinsamen Teiler p > 1 gibt, den i und m besitzen, dann ist k=mipk = \frac{m * i}{p}.

    k ist (per Definition) nach 0 das kleinste Vielfache von i, welches durch m teilbar ist. Das heißt: es ist (nach 0) ebenfalls das kleinste Vielfache von i, für welches k mod m=0k \ mod \ m = 0 gilt.

    Das heißt, alle Zahlen in [0, k), die ein Vielfaches von i sind, erzeugen bezüglich m alle unterschiedliche Moduli, und die Menge dieser Moduli bilden die multiplikativen Moduli.

    Damit ist die Größe der Menge der multiplikativen Moduli gegeben: ki=mp\frac{k}{i} = \frac{m}{p}. Da diese kleiner ist als m, und die Menge der multiplikativen Moduli also weniger Elemente hat als das Intervall [0, m), gibt es Elemente in [0, m) die sie nicht enthält.
    Wenn p aber 1 ist (weil m und i teilerfremd sind und das ihr größter Teiler ist), dann enthält die Menge genau m (unterschiedliche) Zahlen. Da nur Werte in [0, m) vorkommen können, kommt damit jeder Wert in [0, m) in der Menge der Moduli vor.
    QED (quod est dubitandum)

    Beispiel: Für i=4 und m=6 ist die Menge der multiplikativen Moduli
    {4, 2, 0}.
    k ist 462=12\frac{4*6}{2} = 12, die Größe der Menge ist 62=3\frac{6}{2}=3.
    Da die Größe der Menge (3) kleiner ist als 6, enthält sie nicht alle Elemente von {0, 1, 2, 3, 4, 5}.
    Dasselbe ist für 5 und 6 aufzuschreiben, jedoch wird man feststellen dass die Menge der Multiplikativen Moduli 6 Elemente enthält.

    Viel Text um nix. Ja, ich weiß schon, Du hast im Prinzip alles richtig gemacht und fühlst Dich jetzt ungerecht behandelt, wirste sagen. Aber ich finde, daß Du den Kern überhaupt nicht getroffen hast. m und i müssen teilerfremd sein. Welche Zahlen sind zu Zweierpotenzen teilerfremd? Alle, die keine 2 als Primfaktor drin haben, also alle ungeraden Zahlen.

    Menno, der key muss schlicht ungerade sein, sonst nix.

    Wieso aber ist die Surjektivität deiner Funktion so wichtig?

    Weil sie so billig ist, darf man sie nicht vernachlässigen. Ist wohl klar, daß es ganz nett ist, wenn man beim Verschlüsseln den Datentyp nicht wechseln muss bzw man beim Behalten des Typs keine Bits verliert.



  • Sone schrieb:

    P.S.: Volkard, ich weiß immer noch nicht was ich studieren soll, und ich muss mich relativ bald entscheiden (in genau einem Jahr muss es feststehen).

    Tip:

    Etwas, was möglichst weit weg von der Informatik ist. Wirtschaft, Psychologie, ..., besser was, was nicht so überlaufen von Leuten ist, deren "Traumstudium" es ist. Das macht zu viel Marktdruck und schlechte Löhne. Vielleicht Jobs mit großer Lobby (und größerer Larmoyanz)? Medicin, Jura, Lehramt?

    Die Computerei fliegt Dir ja eh zu, wenn auch in seltsamem Gekröse. Für ein gelegentliches hello-world wird es schon reichen. Wirst lachen, die Psychologen wissen nicht, daß man in Excel VBA-Scripts schreiben kann und verbringen auch mal 50% ihrer Zeit für die Bachelorarbeit mit Klicken, wo ein Tag Coden reichen würde und Fehler vermeiden würde. Sie fragen ihren WG-Mitbewohner-Computerzauberer nichtmal, ob er helfen mag, sie wissen einfach nicht, daß das geht. Es gibt ja viele Betriebswirte. Aber haste mal einen gesehen, der auch nur eine klitzekleine Begabung für die Mathematik hat??? Nö, natürlich nicht, BWL ist ja das klassische Mathe-Fluchststudium. Aber es gibt tatsächlich welche und die sind sofort der Platzhirsch!

    Türlich brauchen auch alle Ingenieursstudiengänge Leute, die am Rechner mehr können, als fertige Anwendungsprogramme zu beklicken. Aber wenn Du da auch so viele facepalms baust, fliegste raus. Vermutlich haste ne Begabung für undurchsichtige Schwätzfächer. Viel Text um nix halt.



  • hustbaer schrieb:

    Sieht für mich nicht nach Base64 aus. Würde eher auf ne selbst-erdachte Kodierung tippen.

    Klar. cooky451 hatte base64 nur in den Raum geworfen, um die Absudutät unserer Verschörungstheorie zu verdeutlichen, indem er die Strings auch gleich dekodiert hat und siehe da, es war eine IP-Adresse in China.



  • Sone schrieb:

    k ist (per Definition) nach 0 das kleinste Vielfache von i, welches durch m teilbar ist. Das heißt: es ist (nach 0) ebenfalls das kleinste Vielfache von i, für welches k mod m=0k \ mod \ m = 0 gilt.

    Das heißt, alle Zahlen in [0, k), die ein Vielfaches von i sind, erzeugen bezüglich m alle unterschiedliche Moduli

    Könntest du nochmal ausführen, warum diese Moduli jetzt alle unterschiedlich sein müssen? Du hast ja erstmal nur gezeigt, dass sie alle ungleich 0 sind.



  • ipsec schrieb:

    Sone schrieb:

    Das heißt, alle Zahlen in [0, k), die ein Vielfaches von i sind, erzeugen bezüglich m alle unterschiedliche Moduli

    Könntest du nochmal ausführen, warum diese Moduli jetzt alle unterschiedlich sein müssen? Du hast ja erstmal nur gezeigt, dass sie alle ungleich 0 sind.

    Ja, genau - aber ist das denn nicht schon "selbstverständlich"? Oder ist das sogar noch unbewiesen?

    Alle, die keine 2 als Primfaktor drin haben, also alle ungeraden Zahlen.

    Darauf bin ich auch gekommen, aber dann ist mir klar geworden, dass das viel zu einfach wäre... das kann doch nicht einfach für alle ungeraden Zahlen sein... Ich habe wohl was übersehen. Und du würdest irgendwie auf Primzahlen anspielen. 🤡

    Ja, technisch sind alle Zahlen zu 2322^32 teilerfremd, die ungerade sind. Jetzt willst du mir erzählen, dass das für alle Funktionswerte < 2322^32 irgendeinen Unterschied macht?



  • Sone schrieb:

    ipsec schrieb:

    Sone schrieb:

    Das heißt, alle Zahlen in [0, k), die ein Vielfaches von i sind, erzeugen bezüglich m alle unterschiedliche Moduli

    Könntest du nochmal ausführen, warum diese Moduli jetzt alle unterschiedlich sein müssen? Du hast ja erstmal nur gezeigt, dass sie alle ungleich 0 sind.

    Ja, genau - aber ist das denn nicht schon "selbstverständlich"? Oder ist das sogar noch unbewiesen?

    Du hast gezeigt, dass a⋅i ≠ 0 (mod m) für a⋅i < k. Daraus schließt du, dass diese a⋅i alle unterschiedliche Werte annehmen, also dass z.B. nicht a⋅i = a'⋅i = 1 für bestimmte a, a'. Diesen Schritt finde ich nicht selbstverständlich.

    Die Aussage gilt natürlich (also ist insbesondere auch nicht unbewiesen). Aber trotzdem ist dein Beweis unvollständig.



  • Sone schrieb:

    Ja, technisch sind alle Zahlen zu 232 teilerfremd, die ungerade sind. Jetzt willst du mir erzählen, dass das für alle Funktionswerte < 232 irgendeinen Unterschied macht?

    Hä?
    Alle ungeraden Schlüssel können 2^32 unterschiedliche Funktionswerte erzeugen, mithin ist die Verschlüsselungsfunktion dann umkehrbar. Alle geraden Schlüssel erzeugen weniger. Zweifelst Du daran? Oder was war die Frage?


Anmelden zum Antworten