怎么防止代码注入

时间:2022-05-31 13:39:38
危害:
通过OS特定技术,将代码写入到目标进程并让其执行的技术。攻击者可以将一段恶意代码写到目标进程,这段代码可以加载其它可执行程序,进而实施hook,监控程序运行行为、获取敏感信息等。
对于金融客户端,可通过代码注入技术,将恶意代码注入到客户端中,窃取输入的登录账号、密码、支付密码,修改转账的目标账号、金额,窃取通讯数据等。

请教如何防止代码注入

54 个解决方案

#1


自已的程序hook Openprocess,发现句柄是你自己就返回异常

#2


引用 1 楼 llxxhm 的回复:
自已的程序hook Openprocess,发现句柄是你自己就返回异常

大神,能具体说一下么,新手不太明白啊。。。

#3


怎么防止代码注入好问题,坐等大牛解答

#4


该回复于2014-06-20 15:51:20被管理员删除

#5


引用 1 楼 llxxhm 的回复:
自已的程序hook Openprocess,发现句柄是你自己就返回异常

求大神解答

#6


该回复于2014-06-20 16:06:58被管理员删除

#7


大神都在上班么。。。

#8


在这个论坛的基本都是上班一族吧!应该只有下班空闲时间才能看帖子。

#9


缺少人气啊,,来这里看看。。。

#10


该回复于2014-06-21 10:30:54被管理员删除

#11


这个动作,会不会直接被杀毒软件给杀了?

引用 1 楼 llxxhm 的回复:
自已的程序hook Openprocess,发现句柄是你自己就返回异常

#12


该回复于2014-06-21 10:21:49被管理员删除

#13


怎么防止代码注入

#14


好像可以去看雪论坛潜水一周哦。一周后大概就有答案了。

#15


怎么防止代码注入
UP

#16


该回复于2014-06-21 09:34:03被管理员删除

#17


该回复于2014-06-21 10:01:14被管理员删除

#18


learning

#19


该回复于2014-06-21 12:03:36被管理员删除

#20


该回复于2014-06-21 14:21:38被管理员删除

#21


up 怎么防止代码注入

#22


好东西 收藏了

#23


这是黑客的做法啊。

#24


linux下应该也有类似Hook技术吧

#25


得坐牢的,哈哈

#26


这个有意思,Mark一个。

话说,这贴中怎么那么多被删除的回复?

#27


怎么防止代码注入

#28


先逛逛学习学习

#29


进程注入没办法防止的。

至于通过注入获取用户帐号和密码,这个是可以防止的
重载密码控件,对密码进行n次md5 然后提交
这样黑客就是通过GetWindowText获取到了窗口内容也无法利用账号进行交易。
毕竟服务器是对密码原码进行n次md5后的内容进行校验的,这n是黑客没办法直接知道的
只能尝试,对于金融系统来说,尝试的次数是有限制的,一般是3次失败就直接锁定帐号。

网络传输可以采用加密,在账号登陆成功之间就建立加密连接,可以100%保证加密的安全,如果采用类似rsa认证,就是公司内部员工出卖协议文档,也没办法进行破解。

最终就是进程代码注入,被注入者是可以自己进行预防的,就是检查自身线程数量或线程句柄,正常情况下自身创建的线程可能是不固定的,但是完全可以采用一个简单的链表进行记录,发现非法线程,进程自身立马自锁并报警(,必要时可以主动自毁,然后发送错误报告),这样就可以保证金融软件客户端的自身安全。

至于什么hook openprocess的做法完全就是搞笑了,为了一个简单的安全功能去开发驱动技术没有必要(,我了解不通过驱动也可以hook系统dll,但是你没办法绕过杀毒软件不是!!!),所以做功能不要舍近求远的追求技术上的突破,毕竟用简单的办法把问题解决才是最有效的办法。

#30


有2个方法:
1, 在3环写个钩子, hook 掉 OpenProcess函数, 觉得不保险再hook几个相关函数, 比如CreateRemoteThread(创建远程线程)
2,在0环做内核保护程序, 保护你的进程防止黑客打开

涉及的技术内容不少,  自己百度吧

#31


坐等大牛解答

#32


只要不是通过你的程序漏洞注入的,那即使用户发生了损失也和你无关.
而通过其他途径注入了,你一个普通应用程序也做不了什么.
或者你是想问怎么开发一个卡巴斯基?

#33


引用 32 楼 sj178220709 的回复:
只要不是通过你的程序漏洞注入的,那即使用户发生了损失也和你无关.
而通过其他途径注入了,你一个普通应用程序也做不了什么.
或者你是想问怎么开发一个卡巴斯基?

就是普通程序根本不用考虑注入的事呗?用户账号密码很容易就丢失了也跟开发无所谓呗?然后把错误归给用户操作环境不安全?

#34


怎么防止代码注入

#35


留着看看 怎么防止代码注入

#36


怎么防止代码注入
好像很厉害的样子

#37


引用 29 楼 chinacoding 的回复:
进程注入没办法防止的。

至于通过注入获取用户帐号和密码,这个是可以防止的
重载密码控件,对密码进行n次md5 然后提交
这样黑客就是通过GetWindowText获取到了窗口内容也无法利用账号进行交易。
毕竟服务器是对密码原码进行n次md5后的内容进行校验的,这n是黑客没办法直接知道的
只能尝试,对于金融系统来说,尝试的次数是有限制的,一般是3次失败就直接锁定帐号。

网络传输可以采用加密,在账号登陆成功之间就建立加密连接,可以100%保证加密的安全,如果采用类似rsa认证,就是公司内部员工出卖协议文档,也没办法进行破解。

最终就是进程代码注入,被注入者是可以自己进行预防的,就是检查自身线程数量或线程句柄,正常情况下自身创建的线程可能是不固定的,但是完全可以采用一个简单的链表进行记录,发现非法线程,进程自身立马自锁并报警(,必要时可以主动自毁,然后发送错误报告),这样就可以保证金融软件客户端的自身安全。

至于什么hook openprocess的做法完全就是搞笑了,为了一个简单的安全功能去开发驱动技术没有必要(,我了解不通过驱动也可以hook系统dll,但是你没办法绕过杀毒软件不是!!!),所以做功能不要舍近求远的追求技术上的突破,毕竟用简单的办法把问题解决才是最有效的办法。



你自己试过没,不要胡乱误导人。

“简单的安全功能”,安全功能很简单?
“密码控件重载”就获取不到密码了?服务器端对密码进行N次MD5是没错,问题是他这个是对最初的明文进行MD5的,你MD5再多次,明文都已经被截取了有什么用?
能在用户态拦截到密码的那都是裸奔程序,安全控件都是驱动级的,与拦截器对抗也是看双方在驱动级调用链上谁处于更底层谁获胜,谁先在驱动级获取到用户输入,谁就可以欺骗上层挂载的驱动

#38


引用 29 楼 chinacoding 的回复:
进程注入没办法防止的。

至于通过注入获取用户帐号和密码,这个是可以防止的
重载密码控件,对密码进行n次md5 然后提交
这样黑客就是通过GetWindowText获取到了窗口内容也无法利用账号进行交易。
毕竟服务器是对密码原码进行n次md5后的内容进行校验的,这n是黑客没办法直接知道的
只能尝试,对于金融系统来说,尝试的次数是有限制的,一般是3次失败就直接锁定帐号。

网络传输可以采用加密,在账号登陆成功之间就建立加密连接,可以100%保证加密的安全,如果采用类似rsa认证,就是公司内部员工出卖协议文档,也没办法进行破解。

最终就是进程代码注入,被注入者是可以自己进行预防的,就是检查自身线程数量或线程句柄,正常情况下自身创建的线程可能是不固定的,但是完全可以采用一个简单的链表进行记录,发现非法线程,进程自身立马自锁并报警(,必要时可以主动自毁,然后发送错误报告),这样就可以保证金融软件客户端的自身安全。

至于什么hook openprocess的做法完全就是搞笑了,为了一个简单的安全功能去开发驱动技术没有必要(,我了解不通过驱动也可以hook系统dll,但是你没办法绕过杀毒软件不是!!!),所以做功能不要舍近求远的追求技术上的突破,毕竟用简单的办法把问题解决才是最有效的办法。

哥们,做过G么?你这分析未免有点那个啥,客户端输入一个字符md5一次?还是n次?那后面输入的就不知道前面输入啥了,你不用数组保存?你保存的数组不会被窃取?人家子类化就把你全搞掉了。RSA?SSL?今年爆出来的ssl漏洞是啥?在建立ssl之前就弄个代理搞死如何?监控线程?我都不用线程咋监控?
未免把安全想得太简单了。做这么年内也没发现一个完全安全的方法实现一个软件

#39


关注一下,毕竟软件的安全是很重要的

#40


该回复于2014-06-23 16:26:09被管理员删除

#41


引用 37 楼 hemaliu 的回复:
Quote: 引用 29 楼 chinacoding 的回复:

进程注入没办法防止的。

至于通过注入获取用户帐号和密码,这个是可以防止的
重载密码控件,对密码进行n次md5 然后提交
这样黑客就是通过GetWindowText获取到了窗口内容也无法利用账号进行交易。
毕竟服务器是对密码原码进行n次md5后的内容进行校验的,这n是黑客没办法直接知道的
只能尝试,对于金融系统来说,尝试的次数是有限制的,一般是3次失败就直接锁定帐号。

网络传输可以采用加密,在账号登陆成功之间就建立加密连接,可以100%保证加密的安全,如果采用类似rsa认证,就是公司内部员工出卖协议文档,也没办法进行破解。

最终就是进程代码注入,被注入者是可以自己进行预防的,就是检查自身线程数量或线程句柄,正常情况下自身创建的线程可能是不固定的,但是完全可以采用一个简单的链表进行记录,发现非法线程,进程自身立马自锁并报警(,必要时可以主动自毁,然后发送错误报告),这样就可以保证金融软件客户端的自身安全。

至于什么hook openprocess的做法完全就是搞笑了,为了一个简单的安全功能去开发驱动技术没有必要(,我了解不通过驱动也可以hook系统dll,但是你没办法绕过杀毒软件不是!!!),所以做功能不要舍近求远的追求技术上的突破,毕竟用简单的办法把问题解决才是最有效的办法。



你自己试过没,不要胡乱误导人。

“简单的安全功能”,安全功能很简单?
“密码控件重载”就获取不到密码了?服务器端对密码进行N次MD5是没错,问题是他这个是对最初的明文进行MD5的,你MD5再多次,明文都已经被截取了有什么用?
能在用户态拦截到密码的那都是裸奔程序,安全控件都是驱动级的,与拦截器对抗也是看双方在驱动级调用链上谁处于更底层谁获胜,谁先在驱动级获取到用户输入,谁就可以欺骗上层挂载的驱动


正解,真正需要做到安全,恐怕需要避开字符密码这类技术或者从硬件入手了!

#42


看起来好厉害的样子...

#43


怎么防止代码注入

#44


矛与盾的关系,不能绝对防御,但是可以做一些暗装。猥琐的检测到之后做点什么。

#45


网络上没有绝对安全的东西,只有更安全的!!

#46


果然是好帖,引出一些大牛。没有绝对安全的技术,支付宝还承认有10万分之1的用户,发生过因为安卓客户端安全性问题导致钱被盗了。

#47


强..............

#48


学习下。。。

#49


关注,学习学习

#50


深奥。。应该可以入注的,只有大神才有解决方案

#1


自已的程序hook Openprocess,发现句柄是你自己就返回异常

#2


引用 1 楼 llxxhm 的回复:
自已的程序hook Openprocess,发现句柄是你自己就返回异常

大神,能具体说一下么,新手不太明白啊。。。

#3


怎么防止代码注入好问题,坐等大牛解答

#4


该回复于2014-06-20 15:51:20被管理员删除

#5


引用 1 楼 llxxhm 的回复:
自已的程序hook Openprocess,发现句柄是你自己就返回异常

求大神解答

#6


该回复于2014-06-20 16:06:58被管理员删除

#7


大神都在上班么。。。

#8


在这个论坛的基本都是上班一族吧!应该只有下班空闲时间才能看帖子。

#9


缺少人气啊,,来这里看看。。。

#10


该回复于2014-06-21 10:30:54被管理员删除

#11


这个动作,会不会直接被杀毒软件给杀了?

引用 1 楼 llxxhm 的回复:
自已的程序hook Openprocess,发现句柄是你自己就返回异常

#12


该回复于2014-06-21 10:21:49被管理员删除

#13


怎么防止代码注入

#14


好像可以去看雪论坛潜水一周哦。一周后大概就有答案了。

#15


怎么防止代码注入
UP

#16


该回复于2014-06-21 09:34:03被管理员删除

#17


该回复于2014-06-21 10:01:14被管理员删除

#18


learning

#19


该回复于2014-06-21 12:03:36被管理员删除

#20


该回复于2014-06-21 14:21:38被管理员删除

#21


up 怎么防止代码注入

#22


好东西 收藏了

#23


这是黑客的做法啊。

#24


linux下应该也有类似Hook技术吧

#25


得坐牢的,哈哈

#26


这个有意思,Mark一个。

话说,这贴中怎么那么多被删除的回复?

#27


怎么防止代码注入

#28


先逛逛学习学习

#29


进程注入没办法防止的。

至于通过注入获取用户帐号和密码,这个是可以防止的
重载密码控件,对密码进行n次md5 然后提交
这样黑客就是通过GetWindowText获取到了窗口内容也无法利用账号进行交易。
毕竟服务器是对密码原码进行n次md5后的内容进行校验的,这n是黑客没办法直接知道的
只能尝试,对于金融系统来说,尝试的次数是有限制的,一般是3次失败就直接锁定帐号。

网络传输可以采用加密,在账号登陆成功之间就建立加密连接,可以100%保证加密的安全,如果采用类似rsa认证,就是公司内部员工出卖协议文档,也没办法进行破解。

最终就是进程代码注入,被注入者是可以自己进行预防的,就是检查自身线程数量或线程句柄,正常情况下自身创建的线程可能是不固定的,但是完全可以采用一个简单的链表进行记录,发现非法线程,进程自身立马自锁并报警(,必要时可以主动自毁,然后发送错误报告),这样就可以保证金融软件客户端的自身安全。

至于什么hook openprocess的做法完全就是搞笑了,为了一个简单的安全功能去开发驱动技术没有必要(,我了解不通过驱动也可以hook系统dll,但是你没办法绕过杀毒软件不是!!!),所以做功能不要舍近求远的追求技术上的突破,毕竟用简单的办法把问题解决才是最有效的办法。

#30


有2个方法:
1, 在3环写个钩子, hook 掉 OpenProcess函数, 觉得不保险再hook几个相关函数, 比如CreateRemoteThread(创建远程线程)
2,在0环做内核保护程序, 保护你的进程防止黑客打开

涉及的技术内容不少,  自己百度吧

#31


坐等大牛解答

#32


只要不是通过你的程序漏洞注入的,那即使用户发生了损失也和你无关.
而通过其他途径注入了,你一个普通应用程序也做不了什么.
或者你是想问怎么开发一个卡巴斯基?

#33


引用 32 楼 sj178220709 的回复:
只要不是通过你的程序漏洞注入的,那即使用户发生了损失也和你无关.
而通过其他途径注入了,你一个普通应用程序也做不了什么.
或者你是想问怎么开发一个卡巴斯基?

就是普通程序根本不用考虑注入的事呗?用户账号密码很容易就丢失了也跟开发无所谓呗?然后把错误归给用户操作环境不安全?

#34


怎么防止代码注入

#35


留着看看 怎么防止代码注入

#36


怎么防止代码注入
好像很厉害的样子

#37


引用 29 楼 chinacoding 的回复:
进程注入没办法防止的。

至于通过注入获取用户帐号和密码,这个是可以防止的
重载密码控件,对密码进行n次md5 然后提交
这样黑客就是通过GetWindowText获取到了窗口内容也无法利用账号进行交易。
毕竟服务器是对密码原码进行n次md5后的内容进行校验的,这n是黑客没办法直接知道的
只能尝试,对于金融系统来说,尝试的次数是有限制的,一般是3次失败就直接锁定帐号。

网络传输可以采用加密,在账号登陆成功之间就建立加密连接,可以100%保证加密的安全,如果采用类似rsa认证,就是公司内部员工出卖协议文档,也没办法进行破解。

最终就是进程代码注入,被注入者是可以自己进行预防的,就是检查自身线程数量或线程句柄,正常情况下自身创建的线程可能是不固定的,但是完全可以采用一个简单的链表进行记录,发现非法线程,进程自身立马自锁并报警(,必要时可以主动自毁,然后发送错误报告),这样就可以保证金融软件客户端的自身安全。

至于什么hook openprocess的做法完全就是搞笑了,为了一个简单的安全功能去开发驱动技术没有必要(,我了解不通过驱动也可以hook系统dll,但是你没办法绕过杀毒软件不是!!!),所以做功能不要舍近求远的追求技术上的突破,毕竟用简单的办法把问题解决才是最有效的办法。



你自己试过没,不要胡乱误导人。

“简单的安全功能”,安全功能很简单?
“密码控件重载”就获取不到密码了?服务器端对密码进行N次MD5是没错,问题是他这个是对最初的明文进行MD5的,你MD5再多次,明文都已经被截取了有什么用?
能在用户态拦截到密码的那都是裸奔程序,安全控件都是驱动级的,与拦截器对抗也是看双方在驱动级调用链上谁处于更底层谁获胜,谁先在驱动级获取到用户输入,谁就可以欺骗上层挂载的驱动

#38


引用 29 楼 chinacoding 的回复:
进程注入没办法防止的。

至于通过注入获取用户帐号和密码,这个是可以防止的
重载密码控件,对密码进行n次md5 然后提交
这样黑客就是通过GetWindowText获取到了窗口内容也无法利用账号进行交易。
毕竟服务器是对密码原码进行n次md5后的内容进行校验的,这n是黑客没办法直接知道的
只能尝试,对于金融系统来说,尝试的次数是有限制的,一般是3次失败就直接锁定帐号。

网络传输可以采用加密,在账号登陆成功之间就建立加密连接,可以100%保证加密的安全,如果采用类似rsa认证,就是公司内部员工出卖协议文档,也没办法进行破解。

最终就是进程代码注入,被注入者是可以自己进行预防的,就是检查自身线程数量或线程句柄,正常情况下自身创建的线程可能是不固定的,但是完全可以采用一个简单的链表进行记录,发现非法线程,进程自身立马自锁并报警(,必要时可以主动自毁,然后发送错误报告),这样就可以保证金融软件客户端的自身安全。

至于什么hook openprocess的做法完全就是搞笑了,为了一个简单的安全功能去开发驱动技术没有必要(,我了解不通过驱动也可以hook系统dll,但是你没办法绕过杀毒软件不是!!!),所以做功能不要舍近求远的追求技术上的突破,毕竟用简单的办法把问题解决才是最有效的办法。

哥们,做过G么?你这分析未免有点那个啥,客户端输入一个字符md5一次?还是n次?那后面输入的就不知道前面输入啥了,你不用数组保存?你保存的数组不会被窃取?人家子类化就把你全搞掉了。RSA?SSL?今年爆出来的ssl漏洞是啥?在建立ssl之前就弄个代理搞死如何?监控线程?我都不用线程咋监控?
未免把安全想得太简单了。做这么年内也没发现一个完全安全的方法实现一个软件

#39


关注一下,毕竟软件的安全是很重要的

#40


该回复于2014-06-23 16:26:09被管理员删除

#41


引用 37 楼 hemaliu 的回复:
Quote: 引用 29 楼 chinacoding 的回复:

进程注入没办法防止的。

至于通过注入获取用户帐号和密码,这个是可以防止的
重载密码控件,对密码进行n次md5 然后提交
这样黑客就是通过GetWindowText获取到了窗口内容也无法利用账号进行交易。
毕竟服务器是对密码原码进行n次md5后的内容进行校验的,这n是黑客没办法直接知道的
只能尝试,对于金融系统来说,尝试的次数是有限制的,一般是3次失败就直接锁定帐号。

网络传输可以采用加密,在账号登陆成功之间就建立加密连接,可以100%保证加密的安全,如果采用类似rsa认证,就是公司内部员工出卖协议文档,也没办法进行破解。

最终就是进程代码注入,被注入者是可以自己进行预防的,就是检查自身线程数量或线程句柄,正常情况下自身创建的线程可能是不固定的,但是完全可以采用一个简单的链表进行记录,发现非法线程,进程自身立马自锁并报警(,必要时可以主动自毁,然后发送错误报告),这样就可以保证金融软件客户端的自身安全。

至于什么hook openprocess的做法完全就是搞笑了,为了一个简单的安全功能去开发驱动技术没有必要(,我了解不通过驱动也可以hook系统dll,但是你没办法绕过杀毒软件不是!!!),所以做功能不要舍近求远的追求技术上的突破,毕竟用简单的办法把问题解决才是最有效的办法。



你自己试过没,不要胡乱误导人。

“简单的安全功能”,安全功能很简单?
“密码控件重载”就获取不到密码了?服务器端对密码进行N次MD5是没错,问题是他这个是对最初的明文进行MD5的,你MD5再多次,明文都已经被截取了有什么用?
能在用户态拦截到密码的那都是裸奔程序,安全控件都是驱动级的,与拦截器对抗也是看双方在驱动级调用链上谁处于更底层谁获胜,谁先在驱动级获取到用户输入,谁就可以欺骗上层挂载的驱动


正解,真正需要做到安全,恐怕需要避开字符密码这类技术或者从硬件入手了!

#42


看起来好厉害的样子...

#43


怎么防止代码注入

#44


矛与盾的关系,不能绝对防御,但是可以做一些暗装。猥琐的检测到之后做点什么。

#45


网络上没有绝对安全的东西,只有更安全的!!

#46


果然是好帖,引出一些大牛。没有绝对安全的技术,支付宝还承认有10万分之1的用户,发生过因为安卓客户端安全性问题导致钱被盗了。

#47


强..............

#48


学习下。。。

#49


关注,学习学习

#50


深奥。。应该可以入注的,只有大神才有解决方案