还原被勒索软件加密的文件
昨天分享了一个简单锁屏型勒索软件的分析,主要是对解锁码与PIN码的获得方法,当然也包括了无码时使用adb的直接破解。今天分享一个加密文件的勒索软件,由于该软件没有进行加壳、代码混淆,故要解密文件较为容易,以下就开始进行分享啦。
1、准备一个用于测试的文件,文件名为ShunLiBiYe.txt,(我本人,哈哈哈)。文件内容见下图啦。将该txt文件放到/sdcard目录下。
2、在模拟器上安装该应用,可看出该恶意应用对自己进行了伪装:
3、运行该应用,会出现一堆的俄罗斯文字,文字内容就不具体翻译了,大致意思就是勒索啦。最中间那块黑色的,其实是打开了手机的前置摄像头,但由于现在用的是模拟器,所以就只有一团黑啦。至于为什么打开摄像头,可能就是想在心理层面进一步攻击手机所有者的心理防线吧,瞎猜的,在这里不重要,嘿嘿。
4、此时回到模拟器的/sdcard目录下,发现txt文件出现了“enc”后缀,读取后出现了一堆乱码,说明文件确实被勒索软件加密了。
5、解密的方法,跟昨天分享的破解解锁码与PIN码的方法一样,大致就是把勒索软件的apk拉到JEB里,找到文件解密的相关代码,复制到Android Studio里,稍作修改。作为示范,下面就只贴出部分代码:
6、但是稍作修改是不够的。由于本人对于Android开发尚未入门,所以难免出一些状况,但既然是分享贴,那就都发出来给大家看看吧。
7、首先是第一次报错:
原因:对sd卡没有读写的权限,故listFiles()就无法返回/sdcard目录下的列表,所以在AndroidManifest.xml中增加相应需要的权限:
8、第二次报错:
原因:在将JEB中相关代码复制到Android Studio时,未复制下图中第一个红色框框中的代码,导致v11其实是个空的byte[](即上图中的b变量,此处b与v11是同一个,只是我在改bug时进行了下修改而已。),进而影响了key值。
9、将解密前后的文件对比进行展示:第一个图是在Android Studio的Logcat直接展示,第二个图是回到/sdcard目录下进行查看(/mnt/sdcard与/sdcard其实是指向同一个位置的)
10、在复制黏贴时有些小操作就不多说了,直接附上相关代码吧:
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFileNames(new File(Environment.getExternalStorageDirectory().toString()));
Iterator v3 = this.filesToDecrypt.iterator();
while(v3.hasNext()) {
Object v2 = v3.next();
String encryptedFile=String.valueOf(v2);
String originFile=encryptedFile.substring(0,encryptedFile.lastIndexOf("."));
try {
Log.i("encryptedFile",encryptedFile);
Log.i("originFile",originFile);
decrypt(encryptedFile, originFile);// A.txt.enc,A.txt
fileContent("encryptedFile", encryptedFile);
fileContent("decryptedFile", originFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public ArrayList filesToDecrypt=new ArrayList();
public void fileContent(String fileType, String fileName) throws IOException {
FileInputStream v3 = new FileInputStream(fileName);
Log.i(fileType,fileName);
InputStream inputStream = v3;
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null){
buffer.append(line);
}
String encrypted= buffer.toString();
Log.i(fileType,encrypted);
}
public void decrypt(String encryptedFile, String originFile) throws Exception {// A.txt.enc,A.txt
MessageDigest v0 = MessageDigest.getInstance("SHA-256");
v0.update("jndlasssf074sacxcsadasdadzczxcwr".getBytes("UTF-8"));
byte[] v11 = new byte;
System.arraycopy(v0.digest(), 0, v11, 0, v11.length);
Cipher cipher=Cipher.getInstance("AES/CBC/PKCS7Padding");
SecretKeySpec key = new SecretKeySpec(v11, "AES");
AlgorithmParameterSpec spec = new IvParameterSpec(new byte);
FileInputStream v3 = new FileInputStream(encryptedFile);
FileOutputStream v4 = new FileOutputStream(originFile);
cipher.init(2, key, spec);
CipherInputStream v1 = new CipherInputStream(((InputStream)v3), cipher);
byte[] v2 = new byte;
int v00;
while(true) {
v00= v1.read(v2);
if(v00 == -1) {
break;
}
v4.write(v2, 0, v00);
}
v4.flush();
v4.close();
v1.close();
}
private void getFileNames(File arg8) { // arg8即:new File(Environment.getExternalStorageDirectory().toString())
// List extensionsToDecrypt= Arrays.asList(new String[]{"enc"});
File[] v2 = arg8.listFiles();
int v1;
for(v1 = 0; v1 < v2.length; ++v1) {
File v4 = new File(arg8.getAbsolutePath(), v2.getName());
if(!v4.isDirectory() || v4.listFiles() == null) {
String v3 = v4.getAbsolutePath();
String v0 = v3.substring(v3.lastIndexOf(".") + 1);
// if(extensionsToDecrypt.contains(v0)) {
if(v0.equals("enc")) {
filesToDecrypt.add(v4.getAbsolutePath());
}
}
else {
this.getFileNames(v4);
}
}
}
记得加权限
11、至于该不该把这个勒索软件的apk直接分享出来,又或是分享md5之类的,emmmmmm, 隔壁贴大神出于安全的考虑是不分享的,那我就紧随大神了。 fxfnfxy 发表于 2019-3-4 17:37
我电脑也中了个勒索病毒,所有文件名后缀加CHAR都打不了。这个怎么办,论坛里哪们大神有空能破解下么……
不好意思,我目前只对Android的有些了解,其他的还未接触学习过。说不定你可以发个求助帖??? sunsocen 发表于 2019-3-15 01:07
这个真的厉害了,我服了,这样都能还原那就不用怕勒索病毒了
还是怕的,我分享的这个勒索软件比较简单,它不进行混淆加密之类的操作,否则还原起来就很麻烦了。 能否制作一个破解
工具 小白看不懂感谢分享收藏先 这个给人家解密收费比较吃香 :lol 菠菜汤 发表于 2019-3-4 07:08
能否制作一个破解
工具
针对这个勒索软件作一个破解工具应该是可以的,但可能不适用其他变种。 nizhenyoumo 发表于 2019-3-4 08:12
小白看不懂感谢分享收藏先
请问哪一块我写得不够清楚呢?我可以再进一步解释解释 hxp.china.sh 发表于 2019-3-4 09:40
这个给人家解密收费比较吃香
分享帖,收费什么的,暂时还没想法,哈哈哈哈 给楼主点赞,学习学习 感谢分享 感谢大佬的分享{:1_893:}