Krautkanal.com

Veröffentlicht am 2017-11-22 19:41:00 in /c/

/c/ 221163: Kodierbernd zu Hülf! Ich würde gerne 2 Funkti...

souperphly Avatar
souperphly:#221163

Kodierbernd zu Hülf! Ich würde gerne 2 Funktionen einer ausführbaren Datei ELF 32-bit LSB executable, Analog Devices Blackfin, version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped als Klartext sehen.
Genauer gesagt ist es ein Webserver einer Telefonanlage, welcher über einen versteckten Link einen Code generiert, welcher vom Auerswaldtechniker beantwortet werden kann und so einem weitere Rechte einräumt.
Leider hat Bernd nicht wirklich Ahnung vom Programmieren oder gar Dekompilieren. Erschwerend kommt hinzu, dass es für Blackfin kompiliert ist und IDA hierzu kein Plugin hat.
Kannst du hier etwas machen?
Konkret geht es um challenge_create und challenge_check in der Datei webserver.

Irgendwie muss man auf der doofen Telefonanlage den Telnet Server aktiviert bekommen können und sich via root einloggen können.

Falls Bernd Interesse hat, kann auch das komplett entpackte ROM hochgeladen werden.

chanpory Avatar
chanpory:#221211

Wenn du root willst, würde ich mir zuerst den Aufdatierungsmechanismus anschauen. Sind die Aufdatierungen signiert?

alessandroribe Avatar
alessandroribe:#221243

>>221211
Nein, sind sie nicht. Es sind unsignierte ROM Dumps. Hatte mir auch schon überlegt einen zu entpacken, modifizieren und zurück zu schreiben. Allerdings hatte ich angst, dass das ROM falsch zusammengesetzt ist und die Anlage zum Ziegelstein wird. :3

albertaugustin Avatar
albertaugustin:#221303

OP, guck lieber erst, wie ELF funktioniert. Wenn die Funktionsnamen im Klartext in der Datei stehen und diese dynamisch gebunden ist, dann kann es sich gut um einen Eintrag in der Import-Liste handeln und die Funktionen befinden sich überhaupt gar nicht in deiner Binärdatei selbst.

Du müsstest dann schauen, welche Dlls Bibliotheken zusätzlich vom Programm beim Binder angefragt werden und diese auf exportierte Namen prüfen. Dann hast du auch schon einen Einsprungpunkt und erst dann musst du dich mit Blackfin beschäftigen.

Ansonsten würde ich mir alle Runterlads vom Anbieter genauer anschauen.

Drinvor: Ist schon erledigt und es gab einen viel einfacheren Weg. Aber bitte rapportiere, OP.

pjnes Avatar
pjnes:#221309

>>221303
Wie kann ich denn die zu ladenden Bibliotheken sehen? Normal doch mit ldd, oder? Aber geht das auch in einer anderen Architektur als der eigentlichen ELFe?

armcivor Avatar
armcivor:#221330

>>221309
Du brauchst das ldd der cross-toolchain. Kannst dir wohlmöglich eine passende GCC bauen.

terryxlife Avatar
terryxlife:#221333

Und der Stiefelvorgang?
Hast du Zugang zur Stiefelladerkonsole?

TTL, RS-232 oder einen USB-Port über den eine Serielle Schnittstelle läuft?
Vielleicht 3-4 verdächtige unbestückte Pads auf dem Brett?

Wäre vielleicht ganz gut, um eine Alternative nach dem Ziegelsteinen zu haben.
Manchmal kann man darüber auch ein Abbild ziehen, das man dann gefahrlos modifizieren kann.

karalek Avatar
karalek:#221344

>>221333
Hatte vor ein paar Monaten bereits einen Faden dazu. Konnte keine serielle Konsole ausmachen. Hatte auch mit dem Multimeter während des Bootvorgangs geprüft. Wenn man sich aber mal die Bootzeile im Image anschaut, wird man auch sehen, dass keine serielle Ausgabe erfolgt.
Ich hab noch nicht den Weg dazu gefunden aber entsprechende Konfigdateien im Image scheinen darauf schließen zu lassen, dass telnetd sich irgendwie aktivieren lässt. Ist nur noch die Frage nach dem wie.

>>221330
Also doch schon schwarze Finne, mh? :3

kriegs Avatar
kriegs:#221398

>>221344
>Multimeter
Das kann wohl kein TTL dekodieren, oder?

>Bootzeile
>Wenn man sich aber mal die Bootzeile im Image anschaut, wird man auch sehen, dass keine serielle Ausgabe erfolgt.
Das kann auch hartkodiert sein.

>Ist nur noch die Frage nach dem wie.
Zeig mal dein Abbild.

scottgallant Avatar
scottgallant:#221401

>>221398
Das Multimeter hätte mir aber entweder 0 oder 1 anzeigen können. Der Messwert hätte also schwanken müssen.

Gerne packe ich dir das entpackte jffs2 in ein Archiv und lade es hoch.

hammedk Avatar
hammedk:#221412

Multimeter sind grausig träge. Da kann man nur einem Oszi trauen.

>Gerne packe ich dir das entpackte jffs2 in ein Archiv und lade es hoch.
Wo ist der Elfenjunge?

thehacker Avatar
thehacker:#221413

>>221412
Bernd liefert: https://ufile.io/orqzp

cbracco Avatar
cbracco:#221420

>>221413
Mag sein das das schon im vorigen Pfosten erwähnt wurde, ich habe ihn nicht gelesen:
/etc/init.d/net-servers startet telnet, wenn in /data/etc/network.conf "telnet-server: yes" steht.
Die Konfiguration ist in /data, welches andere Partition im Flash ist, die nicht im Abbild enthalten ist
und über /etc/rc bzw. /opt/auerswald/scripts/data-setup initialisiert wird.

Eine Vorlage der Datei ist in /opt/auerswald/template/network.conf.

/opt/auerswald/scripts/setup-telnet.sh setzt "telnet-server: yes",
allerdings wird das Skript nirgendwo direkt referenziert.

/opt/auerswald/web/webserver scheint nicht das Skript zu benutzen um telnet zu starten,
sondern selber /bin/utelnetd auszuführen. Was Sinn macht, da der nach einem Neustart dann nicht mehr laufen würde.
So muss die Testabteilung erst telnet temporär über den Webserver aktivieren und dann setup-telnet.sh ausführen,
falls telnet permanent laufen soll.

Kann man die Konfiguration übers Webinterface exportieren und wieder laden?
Das wäre vielleicht eine möglichkeit, network.conf zu ändern ohne zu flashen.

Falls du traust ein Abbild zu flicken, wäre der folgende Flicken meine Wahl.
Einziges Risiko bleiben eventuelle Prüfsummen auf dem Abbild und das Format des Abbildes.
Aber ein Abbild mit falscher Prüfsumme sollte eigentlich garnicht geflasht werden.
Für das Format müsstest du halt das jffs2 genau mit dem Original vergleichen.


--- a/etc/init.d/net-servers
+++ b/etc/init.d/net-servers
@@ -22,7 +22,9 @@ nfs=`grep '^nfs-server:' /data/etc/netwo
sed 's/^nfs-server: *//g'`


-if [ "_$telnet" = "_yes" ]; then /sbin/utelnetd& >/dev/null; fi
+#if [ "_$telnet" = "_yes" ]; then /sbin/utelnetd& >/dev/null; fi
+/sbin/utelnetd& >/dev/null
+
if [ "_$ftp" = "_yes" ]; then /sbin/ftpd ; fi
if [ "_$nfs" = "_yes" -a -e /etc/exports ]; then
/sbin/portmap

otozk Avatar
otozk:#221421

>>221420
Das ist eben das Problem. Wenn ich eine 2. Anlage zum Spielen hätte, wäre es kein Problem. Aber die Anlage ist in Betrieb.

Deshalb, wie du bereits erwähnt hattest, war die Idee zu prüfen, wie es über den Webserver gestartet werden kann. Höhere Rechte bekommt man aber wohl nur durch beantworten der Challenge. Und ja, der Rest ist Geschichte bzw. steht im OP. :3
Die data Partition wird wohl dynamisch bei der Installation erzeugt. Deshalb die Konfigtemplates.

Das Konfigbackup ist übrigens leider verschlüsselt. ;_;

a_khadeko Avatar
a_khadeko:#221429

Was sagt Bildrelatiert zu dem Webservierer?

enriquemmorgan Avatar
enriquemmorgan:#221436

>>221429
Hatte IDA schon laufen aber das kennt von Haus aus nicht die Architektur (Blackfin) und ich bin zu wenig in der Materie drin, als dass ich das hin bekomme. Ein bisschen Recherche führten zu einem IDA PlugIn, was sich einer zwecks debugging seines Oszis gebaut hatte. Aber das hilft in dem Fall auch nicht wirklich.

olgary Avatar
olgary:#221441

Bernd dachte das Elfgekrebse wäre ein Standard.. natürlich sind die INHALTE verschieden aber man braucht echt jetzt einen verpisselten auf CPU angepaßten Linker um das Scheisding anzugucken? Strukturell meint Bernd, natürlich braucht man für den Kot nen extra Disassembler.
Is nich wahr jetzt?

teylorfeliz Avatar
teylorfeliz:#221443

>>221441
Also Bernd lässt sich von einem IDA Schrauber gerne eines Besseren bele(h)ren.

buleswapnil Avatar
buleswapnil:#221451

Du kannst natürlich Kot mit einem passenden Disassemblierer disassemblieren.
Nur dein amd64 ldd wird kein Schwarzflosse Binäres verstehen.

Schau mal radare2 an. Das soll Schwarzflosse disassemblieren können.
Wenn du Glück hast, funktioniert auch die Analyse.

stuartlcrawford Avatar
stuartlcrawford:#221459

>>221451

Ja WARUM denn nicht? Manchmal fragt Bernd sich wirklich.

Das ist ja wie bei DNS wo sie 2<<15 Recordtypen definiert haben für spätere Erweiterung und taraaa.. wenn man einen "unbekannten" nutzt dann kotzt BIND ab und ja es geht nicht.

donjain Avatar
donjain:#221469

Denke mal kurz darüber nach.

Ich bin froh, dass in meinem ldd nicht jedes Format drin ist.

Bau dir halt eine Kreuzwerkzeugkette. Ist kein Hexenwerk.

shesgared Avatar
shesgared:#221470

Es soll ja auch nicht jedes Format implementiert werden sondern keins. Der Kot wird natürlich fremd sein, aber man müßte doch wenigstens die Struktur der ELFe sehen können, die Sektionen rauspopeln und so weiter.

nerrsoft Avatar
nerrsoft:#221492

Meinten sie objdump?

davidsasda Avatar
davidsasda:#221499

>>221451
>r2
~$ r2 webserver
Unsupported relocs type 27 for arch 106
...
asm.arch: cannot find (blackfin)
anal.arch: cannot find 'blackfin'
asm.arch: cannot find (blackfin)
anal.arch: cannot find 'blackfin'
asm.arch: cannot find (blackfin)
anal.arch: cannot find 'blackfin'
asm.arch: cannot find (blackfin)
anal.arch: cannot find 'blackfin'
-- How about Global Thermonuclear War?
[0x00020e88]>

markmushiva Avatar
markmushiva:#221597

Was ist los? Hat OP aufgegeben?

tereshenkov Avatar
tereshenkov:#221618

>>221597
Jain. Keine Zeit, Antrieb und keine Ideen mehr. Bernd ist ein Spielkind und probiert gerne und viel. Aber koten kann er nicht. Und wenn es dann mit Cross Chain Compiling etc. zur Sache geht, ist schnell Essig. :3

jonesdigidesign Avatar
jonesdigidesign:#221620

Kann verstehen, Kreuzkompilieren schiebe ich auch schon lange Zeit vor mir her. Bleib dran.

https://landley.net/ols/ols2007/tutorial.txt

a_harris88 Avatar
a_harris88:#221628

>>221618
Ach, Daniel.

Neuste Fäden in diesem Brett: