工业互联网安全测试技术:施耐德后门账号分析.docx
施耐德NOE771后门账号分析实验原理对施耐德NOE77101_Exec_V64.bin固件逆向分析完毕后,可以通过查看固件的服务加 载过程,来查看初始化时所添加的账号等信息。实验目的掌握使用ida pro软件使用方法。实验环境Windows10, ida pro6. 8推荐课时数推荐课时数:2课时实验步骤在NOE77101_Exec_V64上in固件逆向分析完毕后,分析固件中的汇编函数调用关系如syslnit图1函数调用关系老版本固件中 usrNetworklnit->userNetApplnit 函数默认调用 telnetlnit 来开启 telnet 服务的问题已经在新版本固件中修复,同时usrToolsInit中默认调用usrWdblnit开启wdb 服务的问题也解决了,但我们来看usrAppInit,固件后门账户还是存在。ROM:O0O29BE4addiROM:00O29BE8nrROM:O0029BEClisROM:OO029BFOaddiROM:0OO29BF4blROM:0O029BF8lisR0M:00029BFCaddiROM:0O029COOlisROM:0OO29C04addiROM:0O029CO8blR0M:00029C0ClisROM:0OO29C1OaddiR0M:00029C1i<lisROM:O0029C18addiR0M:00029C1CblR0M:00029C20lisROM:0OO29C2MaddiROM:OO029C28lisR0M:00029C2CaddiROM:0OO29C3OblROM:G。829c34lisROM:GO029c38addiR0M:00029C3ClisROM:OO029C40addiROM:0OO29C44blROM: GO 029g8lisR0M:00029C4CaddiROM:0O029C5OlisrO, r31, 0x538r3» r0r9» unk_342044hr4, r91unk_342MietloginDefaultEnc"yptr9,r3,r9,r4.aFwupgradeG)tt ',Fwupgrade*r9, aFwupgr idel it "fwupgrade* unk_34204Wf ir9, unk 342 M崛loginUserAddr9,r3,r9faSysdiagQh* "sysdiag"r9, aSysdiatt "sysdiag'1aBbddrdzb9RiIt "bbddRdzb9"r9, aBbddrd?b9l n ,bbddRdzb9,eloginUserAddr9,r3,r9,r4.aFdrusersRhn -rdrusers"r9, aFdruse *sl U 'Fdrusers" aBrbqyzcy9b ah It "bRbQyzcyQb" r9, aBrbqyz :y9bl tt "bRbQyzcyQb',loginUserAddr9» aUser_0h U “USER”r3, r9, aUser G il It ,'USER"r9, aCdcs9bcqcG)It "cdcSQbcQc',r4» r9, aCdcs9b :qcl U "cdcSQbcQc', loginUserAddr9, aNtpupdateG i tt "ntpupdate*r3, r9, aNtpupd tt "ntpupdate"r9» aSee9cb9y99 如 It -See9cb9y99"图2后门账号查看VxWorksk开发手册,其中对于loginUserAdd函数的描述:The login security feotire 8 initioilzed by tne root tosk. uyRootC). krt usrC82c. If the confiQjration moao INCLUDE. SECURITY 5 defined. DoFng this macro atso odds o single def out user to the login tobte The deautt user ond password ore denned os lOGn U$ER_NAM6 ond LOGiN_PAS$WORD These con be set to any desired name ond password More users con be ooded by motono additional cols to looryserAodf INCIUD6.SECURHY s not defined, access to VxWorta wVnotbe restricted and secure.The rx)me/po$swofd pairs are odded to the loose bv coilng iooinysefA0O(). which tokos the name and on encryptea posswtxa os orQumenb. Th© VxWodcs host tool vxencrypt K used to Qenerote the encrypted form of a password Rx example, to odd a user name of -fre<r ond password of 'Uintslone*. first 5 vxencrypt on the host to find the oncryptton ot "Tintstone“ m foUowt:pl»a«e Mter p*«ewor4i fllAtatooe Mcrypcad paaavord is ScaMaaMeThen invoke the routine (pQbVSCfAddl I 力 VxWorts:IovIaUmcAM (*frW, Thb can be done from the shel, a start-up script, ar appScotion code.图 3 loginUserAdd 函数其中Password提交的参数为经过vxencrypt加密后的值,符合逆向发现的固件的密 码。Rapid7研究员HDMoore曾经发现VxWorks5.x系统默认加密方式存在缺陷,能够通 过特殊方法进行密码破译。简单分析下vxencrypt加密算法:STATUS loginDefaultEncrypt( char *in,char *out) int ix;unsigned long magic =31695317;unsigned long passwdInt=O;if(strlen(in)=8|strlen(in)=50)errnoSet (SJoginLib_INVALID_PASSWORD); return (ERROR):)for (ix=0;ix=strlen(out);ix+)pass wdlnt+=(in ix) *(ix+ l)A(ix+1);sprintf(out,%u,(long)(passwdlnt*magic);for (ix=0;ix=strlen(out);ix+) if(outix= 3) outix=outix+,!9;if(outix= 7) outix=outix+7,;if(outix=,9,) outix =outix+9B9; return (OK);)从代码可得加密过程:在第一步,第一个for循环中密码字符串逐字节与位置下标相乘再按位进行异或操作, 然后将每一个字符的运算结果累加起来算出passwdlnto第二步passwdlnt值与magic相乘再转化为String类型。第三步,字符串逐字符与3、7; 9进行比拟,加相应的值。如果通过第一步计算后的passwdlnt为'0123456789'通过运算将得到加密密码为 ,QRSbcdeyz91,从中可以看出这种加密方式的弱点了。可以通过随机生成密码来构建一个 序列化的输入密码和passwdlnt的对应表,同时passwdlnt与输出密码之间也可构建对应 表,这样输入密码和输出密码将通过长度有限的Int类型passwdlnt打通,这样我们就能通 过查表的方式由输出密码得到输入密码。相比于MD5、SHA1等加密算法,vxencrypt加密算法由于加密方式问题导致密文长度 受限,以至于存在弱点。罗列一下固件中的后门账户:sysdiag bbddRdzb9fdrusers bRbQyzcy9bUSER cdcS9bcQcntpupdate See9cb9y99fwupgrade