{"id":104042,"date":"2018-07-27T05:00:13","date_gmt":"2018-07-27T12:00:13","guid":{"rendered":"https:\/\/unit42.paloaltonetworks.com\/?p=104042"},"modified":"2020-02-04T21:21:31","modified_gmt":"2020-02-05T05:21:31","slug":"unit42-decrypting-lockcrypt-ransomware","status":"publish","type":"post","link":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/","title":{"rendered":"LockCrypt \u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306e\u5fa9\u53f7"},"content":{"rendered":"<h2>\u6982\u8981<\/h2>\n<p>LockCrypt\u306fEncryptServer2018\u3068\u3044\u3046\u5225\u540d\u3067\u3082\u77e5\u3089\u308c\u308b\u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u30d5\u30a1\u30df\u30ea\u3067\u30012017\u5e74\u306e\u534a\u3070\u304b\u3089\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u4e0a\u306b\u51fa\u56de\u308a\u306f\u3058\u3081\u3066\u4ee5\u964d\u4f9d\u7136\u3068\u3057\u3066\u6d3b\u767a\u3067\u3059\u3002\u3053\u306e\u30de\u30eb\u30a6\u30a7\u30a2\u306f\u30ea\u30d0\u30fc\u30b9\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0\u306b\u3088\u308b<a href=\"https:\/\/blog.malwarebytes.com\/threat-analysis\/2018\/04\/lockcrypt-ransomware\/\">\u5b8c\u5168\u306a\u5206\u6790\u3092<\/a> Malwarebytes Labs\u304c2018\u5e744\u6708\u306b\u884c\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u5229\u7528\u3055\u308c\u3066\u3044\u308b\u81ea\u5bb6\u88fd\u306e\u6697\u53f7\u306f\u304a\u7c97\u672b\u306a\u3082\u306e\u3067\u3001\u89e3\u8aad\u306f\u53ef\u80fd\u3068\u6b63\u3057\u304f\u7d50\u8ad6\u3065\u3051\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u305f\u3060\u3057\u3001Malwarebytes\u306e\u30ea\u30b5\u30fc\u30c1\u30e3\u30fc\u306f\u672c\u30de\u30eb\u30a6\u30a7\u30a2\u7528\u306e\u5fa9\u53f7\u30c4\u30fc\u30eb\u306f\u516c\u958b\u3057\u3066\u304a\u3089\u305a\u3001\u307b\u304b\u306b\u30aa\u30f3\u30e9\u30a4\u30f3\u4e0a\u3067\u516c\u958b\u6e08\u307f\u306e\u5fa9\u53f7\u30c4\u30fc\u30eb\u3082\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u307e\u305f\u3001\u3053\u308c\u4ee5\u5916\u306b\u3042\u3052\u3089\u308c\u3066\u3044\u308b\u652f\u63f4\u306f<a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/lockcrypt-ransomware-cracked-due-to-bad-crypto\/\">\u540c\u30e9\u30dc\u306e\u65b0\u3057\u3044\u30d6\u30ed\u30b0\u30a8\u30f3\u30c8\u30ea<\/a>\u3057\u304b\u306a\u304f\u3001\u305d\u3053\u3067\u3082\u540c\u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306e\u88ab\u5bb3\u306b\u3042\u3063\u305f\u4eba\u306fMichael Gillespie (<a href=\"https:\/\/twitter.com\/demonslay335\">@demonslay335<\/a>)\u306b\u5fa9\u53f7\u306b\u3064\u3044\u3066\u76f8\u8ac7\u3059\u308b\u3088\u3046\u52e7\u3081\u3066\u3044\u308b\u306e\u307f\u3067\u3057\u305f\u3002<\/p>\n<p>\u305d\u3053\u3067\u79c1\u305f\u3061\u306fGillepsie\u6c0f\u306b\u9023\u7d61\u3092\u53d6\u308a\u3001<a href=\"https:\/\/twitter.com\/hasherezade\">@hasherezade<\/a>\u3001<a href=\"https:\/\/twitter.com\/framauronz\">@FraMauronz<\/a>\u306e\u4e21\u6c0f\u3068<a href=\"https:\/\/download.bleepingcomputer.com\/demonslay335\/LockCryptDecrypter.zip\">\u5fa9\u53f7\u30c4\u30fc\u30eb\u306e\u4f5c\u6210<\/a>\u3092\u3057\u307e\u3057\u305f\u304c\u3001\u3053\u306e\u5fa9\u53f7\u30c4\u30fc\u30eb\u306f\u5b8c\u5168\u3068\u306f\u3044\u3048\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u65e2\u77e5\u306e\u5e73\u6587\u30d5\u30a1\u30a4\u30eb(1MB)\u304c\u5927\u91cf\u306b\u5fc5\u8981\u3067\u3057\u305f\u3057\u3001\u5fa9\u5143\u3067\u304d\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u540d\u304c\u3042\u3063\u305f\u308a\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u672b\u5c3e1-2\u30d0\u30a4\u30c8\u5206\u304c\u5fa9\u53f7\u3067\u304d\u305a\u306b\u6b8b\u308b\u5834\u5408\u304c\u3042\u3063\u305f\u306e\u3067\u3059\u3002<\/p>\n<p>\u3053\u308c\u3092\u53d7\u3051\u3001\u672c\u7a3f\u3067\u306f\u3001\u672c\u30de\u30eb\u30a6\u30a7\u30a2\u306e\u81ea\u5bb6\u88fd\u6697\u53f7\u306b\u3064\u3044\u3066\u5206\u6790\u3057\u305f\u7d50\u679c\u3068\u305d\u306e\u89e3\u8aad\u65b9\u6cd5\u3001\u307e\u305f25KB\u7a0b\u5ea6\u306e\u3054\u304f\u5c0f\u3055\u3044\u5e73\u6587\u306e\u307f\u3067\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u3053\u306e\u30b7\u30ca\u30ea\u30aa\u3067\u3042\u308c\u3070\u73fe\u5b9f\u7684\u3068\u3044\u3048\u308b\u3067\u3057\u3087\u3046\u3002\u3068\u3044\u3046\u306e\u3082\u3001LockCrypt\u306f\u624b\u5f53\u305f\u308a\u6b21\u7b2c\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u6697\u53f7\u5316\u3057\u307e\u3059\u304c\u3001DLL \u306e\u3088\u3046\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d5\u30a1\u30a4\u30eb\u3082\u305d\u306e\u4f8b\u5916\u3067\u306f\u306a\u3044\u305f\u3081\u3001\u540c\u3058\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u5225\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308c\u3070\u5bb9\u6613\u306b\u5fa9\u5143\u53ef\u80fd\u3060\u304b\u3089\u3067\u3059\u3002\u5fa9\u5143\u7528\u30b9\u30af\u30ea\u30d7\u30c8\u3084\u624b\u9806\u306a\u3069\u306f\u672c\u7a3f\u306e\u672b\u5c3e\u306b\u8a18\u8f09\u3057\u307e\u3059\u3002<\/p>\n<p>\u305f\u3060\u3057\u6700\u8fd1\u3001\u5225\u306e\u6697\u53f7\u65b9\u5f0f\u3092\u5229\u7528\u3059\u308b\u65b0\u3057\u3044\u4e9c\u7a2e\u304c\u898b\u3064\u304b\u3063\u3066\u3044\u308b\u70b9\u306f\u3054\u6ce8\u610f\u304f\u3060\u3055\u3044\u3002\u79c1\u305f\u3061\u306f\u3053\u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u89e3\u6790\u306f\u884c\u3063\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u3053\u3061\u3089\u306f\u305a\u3063\u3068\u5805\u7262\u306a\u6697\u53f7\u304c\u5229\u7528\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<h3><a id=\"post-104042-\u521d\u671f\u306e\u5206\u6790\"><\/a>\u521d\u671f\u306e\u5206\u6790<\/h3>\n<p>\u3053\u306e\u30de\u30eb\u30a6\u30a7\u30a2\u306e\u6697\u53f7\u3092\u9006\u30a2\u30bb\u30f3\u30d6\u30eb\u3057\u3066\u307f\u3066\u308f\u304b\u3063\u305f\u3053\u3068\u306f\u3001\u3053\u306e\u30de\u30eb\u30a6\u30a7\u30a2\u306e\u4f5c\u6210\u8005\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u6697\u53f7\u5316\u3059\u308b\u306b\u3042\u305f\u308a\u3001\u30ab\u30b9\u30bf\u30e0\u30e1\u30a4\u30c9\u306e\u975e\u5e38\u306b\u5f31\u3044\u6697\u53f7\u3092\u9078\u3093\u3060\u3068\u3044\u3046\u3053\u3068\u3067\u3057\u305f\u3002\u79c1\u305f\u3061\u306f\u30012018\u5e74\u306b\u3082\u306a\u3063\u3066\u30ab\u30b9\u30bf\u30e0\u30e1\u30a4\u30c9\u306e\u6697\u53f7\u30e2\u30c7\u30eb\u3092\u5229\u7528\u3057\u305f\u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u3068\u906d\u9047\u3059\u308b\u3053\u3068\u304c\u3042\u308b\u306a\u3069\u3068\u306f\u601d\u3063\u3066\u3082\u3044\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3068\u3044\u3046\u306e\u3082\u3001Windows API \u3092\u5229\u7528\u3059\u308c\u3070\u3001\u4eca\u73fe\u5728\u306a\u3044\u3057\u8fd1\u3044\u5c06\u6765\u306b\u5229\u7528\u53ef\u80fd\u306a\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u3067\u306f\u5fa9\u53f7\u306b\u6570\u5341\u5104\u5e74\u304b\u304b\u308b\u3088\u3046\u306a\u65b9\u5f0f\u3067\u3001\u7c21\u5358\u306b\u30c7\u30fc\u30bf\u3092\u6697\u53f7\u5316\u3067\u304d\u308b\u304b\u3089\u3067\u3059(\u305f\u3068\u3048\u3070\u3001\u5341\u5206\u306b\u6697\u53f7\u5f37\u5ea6\u306e\u9ad8\u3044\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3063\u3066\u751f\u6210\u3055\u308c\u305f\u30ad\u30fc\u3092\u6301\u3064128\u30d3\u30c3\u30c8AES\u6697\u53f7\u65b9\u5f0f\u306a\u3069)\u3002<\/p>\n<p>\u4ee5\u4e0b\u306b\u793a\u3059\u306e\u306f\u3001\u672c\u30de\u30eb\u30a6\u30a7\u30a2\u306e\u6697\u53f7\u95a2\u6570\u3092\u9006\u30a2\u30bb\u30f3\u30d6\u30eb\u3057\u305f\u7d50\u679c\u3092\u540c\u7b49\u306ePython\u30b3\u30fc\u30c9\u3067\u793a\u3057\u305f\u3082\u306e\u3067\u3059\u3002\u306a\u304a\u5f53\u8a72encrypt()\u95a2\u6570\u306eC\u8a00\u8a9e\u7248\u306f<a href=\"https:\/\/blog.malwarebytes.com\/threat-analysis\/2018\/04\/lockcrypt-ransomware\/\">Malwarebyte\u306b\u3088\u308b\u5206\u6790<\/a>\u306b\u63b2\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30dd\u30a4\u30f3\u30bf\u64cd\u4f5c\u304c\u3042\u308b\u5206\u3001\u3053\u3061\u3089\u306e\u65b9\u304c\u5206\u304b\u308a\u3084\u3059\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n<pre class=\"\">def grouper(iterable, n, fillvalue=None):\r\n    \"\"\"returns a generator which iterates iterable in groups of size n.\r\n    in case the last group is incomplete, it is padded with fillvalue\"\"\"\r\n    args = [iter(iterable)] * n\r\n    return itertools.izip_longest(fillvalue=fillvalue, *args)\r\ndef rol(val, n, width):\r\n\t\"\"\"equivalent to the x86 rol opcode\"\"\"\r\n    return (val &lt;&lt; n) &amp; ((1&lt;&lt;width)-1) | \\\r\n           ((val &amp; ((1&lt;&lt;width)-1)) &gt;&gt; (width-n))\r\ndef encrypt(key, plain):\r\n    size = len(plain)-2\r\n    enc = io.BytesIO(plain)\r\n    # phase 1\r\n    key_cyclic = grouper(itertools.cycle(key), 4)\r\n    for _ in xrange(0, size&amp;(~0x3), 2): # align the size of the data to a multiple of 4 bytes\r\n        # get the next key dword\r\n        k = \"\".join(key_cyclic.next())\r\n        k = struct.unpack(\"&lt;I\", k)[0]\r\n        # get the next data dword\r\n        d = enc.read(4)\r\n        d = struct.unpack(\"&lt;I\", d)[0]\r\n        # XOR them and put it back to the data\r\n        e = k^d\r\n        e = struct.pack(\"&lt;I\", e)\r\n        enc.seek(-4, os.SEEK_CUR)\r\n        enc.write(e)\r\n        # go back 2 bytes in the data stream (so that loop iterations overlap)\r\n        enc.seek(-2, os.SEEK_CUR)\r\n    # phase 2\r\n    enc.seek(0, os.SEEK_SET)\r\n    key_cyclic = grouper(itertools.cycle(key), 4)\r\n    for i in xrange(0, size&amp;(~0x3), 4):\r\n        # get the next key dword\r\n        k = \"\".join(key_cyclic.next())\r\n        k = struct.unpack(\"&lt;I\", k)[0]\r\n        # get the next data dword\r\n        d = enc.read(4)\r\n        d = struct.unpack(\"&lt;I\", d)[0] # rotate the data dword e = rol(d, 5, 32) # XOR it with the key dword e = e^k # swap the byte order e = struct.pack(\"&gt;I\", e)\r\n        # put the data dword back\r\n        enc.seek(-4, os.SEEK_CUR)\r\n        enc.write(e)\r\n    return enc.getvalue()\r\ndef encrypt_file(key, file):\r\n    # len(key) == 25000\r\n    # leave the first 4 bytes as-is\r\n    file.seek(4, os.SEEK_SET)\r\n    # encrypt the rest of the first 1MB of the file\r\n    plain_data = file.read(0x100000 - 4)\r\n    enc_data = encrypt(key, plain_data)\r\n    file.seek(4, os.SEEK_SET)\r\n    file.write(enc_data)\r\n    # leave the rest of the file as is\r\n<\/pre>\n<p>\u3053\u306e\u95a2\u6570\u304b\u3089\u306f\u4ee5\u4e0b\u306e\u7d50\u8ad6\u304c\u5c0e\u304d\u51fa\u305b\u307e\u3059:<\/p>\n<ol>\n<li>\u30d5\u30a7\u30fc\u30ba1\u304c\u5b9a\u7fa9\u3059\u308b\u5909\u63db\u306f\u5468\u671f\u7684\u3067\u30011\u30b5\u30a4\u30af\u30eb\u306e\u9577\u3055\u306f12500\u30d0\u30a4\u30c8<\/li>\n<li>\u30d5\u30a7\u30fc\u30ba2\u304c\u5b9a\u7fa9\u3059\u308b\u5909\u63db\u306f\u5468\u671f\u7684\u3067\u30011\u30b5\u30a4\u30af\u30eb\u306e\u9577\u3055\u306f25000\u30d0\u30a4\u30c8<\/li>\n<li>\u30a8\u30c3\u30b8\u30b1\u30fc\u30b9(\u5f8c\u8ff0)\u3092\u9664\u304d\u3001\u5404\u5e73\u6587\u30d3\u30c3\u30c8\u306f3\u3064\u306e\u30ad\u30fc\u30d3\u30c3\u30c8\u3068XOR\u6f14\u7b97\u3055\u308c\u308b(2\u3064\u306e\u30ad\u30fc\u306f\u30d5\u30a7\u30fc\u30ba1\u3001\u6b8b\u308a1\u3064\u306f\u30d5\u30a7\u30fc\u30ba2\u3067)<\/li>\n<li>\u3064\u307e\u308a\u3001\u30d5\u30a7\u30fc\u30ba2\u3067\u884c\u308f\u308c\u305f\u30d3\u30c3\u30c8 \u30b7\u30d5\u30c8\u3092\u300c\u53d6\u308a\u6d88\u3059\u300d(\u30d0\u30a4\u30c8\u9806\u3092\u5165\u308c\u66ff\u3048\u623b\u3057\u305f\u4e0a\u30675\u30d3\u30c3\u30c8\u5206ROR\u6f14\u7b97\u3092\u884c\u3046)\u3053\u3068\u3067\u3001\u4e21\u30d5\u30a7\u30fc\u30ba\u3092\u3072\u3068\u307e\u3068\u3081\u3068\u3057\u3001\u9577\u305525000\u30d0\u30a4\u30c8\u306e\u5468\u671f\u7684\u30ad\u30fc\u3092\u3082\u3064\u30b9\u30c8\u30ea\u30fc\u30e0\u6697\u53f7\u3068\u3057\u3066\u6271\u3046\u3053\u3068\u304c\u3067\u304d\u308b(\u307e\u305f\u3001\u305d\u308c\u304c\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u30ad\u30fc\u306e\u6a5f\u80fd\u3067\u3082\u3042\u308b)\u3002<\/li>\n<\/ol>\n<p>\u6700\u5f8c\u306e2\u3064\u306e\u7d50\u8ad6\u306b\u3064\u3044\u3066\u6b21\u306e\u56f3\u3067\u8aac\u660e\u3057\u307e\u3059\u3002\u3053\u306e\u56f3\u306f\u30c7\u30fc\u30bf\u306e4\u30d0\u30a4\u30c8\u76ee\u304b\u30898\u30d0\u30a4\u30c8\u76ee\u3092\u5909\u63db\u3059\u308b\u69d8\u5b50\u3092\u3001\u5404\u6697\u53f7\u95a2\u6570\u306e\u305d\u308c\u305e\u308c\u306e\u30b9\u30c6\u30c3\u30d7\u306e\u6d41\u308c\u3092\u8ffd\u3063\u3066\u53ef\u8996\u5316\u3057\u305f\u3082\u306e\u3067\u3059\u3002\u5404\u884c\u306e\u9593\u306b\u3042\u308b\u2295\u3068\u3044\u3046\u8a18\u53f7\u306f\u3001\u305d\u308c\u3089\u306e\u30d3\u30c3\u30c8\u304c\u4e92\u3044\u306bXOR\u6f14\u7b97\u3055\u308c\u3066\u3044\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u610f\u5473\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u5909\u63db\u304c\u884c\u308f\u308c\u308b\u524d\u306e4\u30d0\u30a4\u30c8\u76ee\u304b\u30898\u30d0\u30a4\u30c8\u76ee\u306e\u5404\u30d3\u30c3\u30c8\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u72b6\u614b\u3067\u3059:<\/p>\n<p><img width=\"972\" height=\"25\"  class=\"wp-image-104045 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/\/2020\/02\/word-image-98.png\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-98.png 972w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-98-300x8.png 300w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-98-768x20.png 768w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-98-900x23.png 900w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-98-370x10.png 370w\" sizes=\"(max-width: 972px) 100vw, 972px\" \/><\/p>\n<p>\u30d5\u30a7\u30fc\u30ba1\u30eb\u30fc\u30d7\u306e2\u56de\u76ee\u306e\u7e70\u308a\u8fd4\u3057\u304c\u7d42\u308f\u3063\u305f\u5f8c\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<p><img width=\"974\" height=\"85\"  class=\"wp-image-104047 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/\/2020\/02\/word-image-99.png\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-99.png 974w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-99-300x26.png 300w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-99-768x67.png 768w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-99-900x79.png 900w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-99-370x32.png 370w\" sizes=\"(max-width: 974px) 100vw, 974px\" \/><\/p>\n<p>\u30d5\u30a7\u30fc\u30ba1\u30eb\u30fc\u30d7\u306e3\u56de\u76ee\u306e\u7e70\u308a\u8fd4\u3057\u304c\u7d42\u308f\u3063\u305f\u5f8c\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<p><img width=\"972\" height=\"145\"  class=\"wp-image-104049 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/\/2020\/02\/word-image-100.png\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-100.png 972w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-100-300x45.png 300w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-100-768x115.png 768w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-100-900x134.png 900w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-100-370x55.png 370w\" sizes=\"(max-width: 972px) 100vw, 972px\" \/><\/p>\n<p>\u30d5\u30a7\u30fc\u30ba1\u30eb\u30fc\u30d7\u306e4\u56de\u76ee\u306e\u7e70\u308a\u8fd4\u3057\u304c\u7d42\u308f\u3063\u305f\u5f8c\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059(\u30d5\u30a7\u30fc\u30ba1\u306e\u30eb\u30fc\u30d7\u306f\u3059\u3079\u3066\u540c\u3058\u3053\u3068\u306e\u7e70\u308a\u8fd4\u3057):<\/p>\n<p><img width=\"972\" height=\"206\"  class=\"wp-image-104051 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/\/2020\/02\/word-image-101.png\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-101.png 972w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-101-300x64.png 300w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-101-768x163.png 768w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-101-900x191.png 900w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-101-370x78.png 370w\" sizes=\"(max-width: 972px) 100vw, 972px\" \/><\/p>\n<p>\u30d5\u30a7\u30fc\u30ba2\u30eb\u30fc\u30d7\u306e2\u56de\u76ee\u306e\u7e70\u308a\u8fd4\u3057\u4e2d\u3001ROL\u6f14\u7b97\u304c\u7d42\u308f\u3063\u305f\u5f8c\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<p><img width=\"972\" height=\"206\"  class=\"wp-image-104053 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/\/2020\/02\/word-image-102.png\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-102.png 972w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-102-300x64.png 300w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-102-768x163.png 768w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-102-900x191.png 900w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-102-370x78.png 370w\" sizes=\"(max-width: 972px) 100vw, 972px\" \/><\/p>\n<p>\u30d5\u30a7\u30fc\u30ba2\u30eb\u30fc\u30d7\u306e2\u56de\u76ee\u306e\u7e70\u308a\u8fd4\u3057\u4e2d\u3001XOR\u6f14\u7b97\u304c\u7d42\u308f\u3063\u305f\u5f8c\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<p><img width=\"972\" height=\"268\"  class=\"wp-image-104055 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/\/2020\/02\/word-image-103.png\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-103.png 972w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-103-300x83.png 300w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-103-768x212.png 768w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-103-900x248.png 900w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-103-370x102.png 370w\" sizes=\"(max-width: 972px) 100vw, 972px\" \/><\/p>\n<p>\u30d0\u30a4\u30c8\u9806\u3092\u5165\u308c\u66ff\u3048\u3066\u3053\u308c\u3089\u306e\u30d0\u30a4\u30c8\u306e\u6697\u53f7\u5316\u306f\u7d42\u4e86\u3067\u3059\u3002<\/p>\n<h3><a id=\"post-104042-\u30b9\u30c8\u30ea\u30fc\u30e0-\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b\"><\/a>\u300c\u30b9\u30c8\u30ea\u30fc\u30e0 \u30ad\u30fc\u300d\u3092\u5fa9\u5143\u3059\u308b<\/h3>\n<p>\u5148\u306e\u56f3\u3067\u6697\u53f7\u5316\u3055\u308c\u305f4\u30d0\u30a4\u30c8\u76ee\u304b\u30898\u30d0\u30a4\u30c8\u76ee\u3092\u4f7f\u3044\u3001\u30d0\u30a4\u30c8\u9806\u306e\u5165\u308c\u66ff\u3048\u3092\u5143\u306b\u623b\u3057\u30665\u30d3\u30c3\u30c8\u5206ROR\u6f14\u7b97\u3092\u3059\u308b\u3068\u6b21\u306e\u7d50\u679c\u304c\u5f97\u3089\u308c\u307e\u3059:<\/p>\n<p><img width=\"972\" height=\"268\"  class=\"wp-image-104057 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/\/2020\/02\/word-image-104.png\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-104.png 972w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-104-300x83.png 300w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-104-768x212.png 768w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-104-900x248.png 900w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-104-370x102.png 370w\" sizes=\"(max-width: 972px) 100vw, 972px\" \/><\/p>\n<p>\u8981\u3059\u308b\u306b\u3001\u3053\u306e\u6f14\u7b97(\u30d0\u30a4\u30c8\u9806\u306e\u5165\u308c\u66ff\u3048\u3092\u5143\u306b\u623b\u3057\u30665\u30d3\u30c3\u30c8\u5206ROR\u6f14\u7b97\u3059\u308b)\u306b\u3088\u308a\u3001\u3053\u306e\u6697\u53f7\u3092\u5178\u578b\u7684\u306a\u30b9\u30c8\u30ea\u30fc\u30e0\u6697\u53f7\u306b\u300c\u6b63\u898f\u5316\u300d\u3057\u305f\u308f\u3051\u3067\u3059\u3002\u3053\u306e\u5f8c\u3001\u3053\u308c\u3089\u306e\u30d0\u30a4\u30c8\u3068\u65e2\u77e5\u306e\u5e73\u6587\u3068\u306eXOR\u6f14\u7b97\u3092\u884c\u3048\u3070\u3001\u5148\u306e\u7d50\u8ad64\u3067\u8ff0\u3079\u305f\u30ad\u30fc \u30d3\u30c3\u30c8\u306e\u6a5f\u80fd\u304c\u5f97\u3089\u308c\u307e\u3059:<\/p>\n<p><img width=\"972\" height=\"206\"  class=\"wp-image-104059 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/\/2020\/02\/word-image-105.png\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-105.png 972w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-105-300x64.png 300w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-105-768x163.png 768w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-105-900x191.png 900w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2020\/02\/word-image-105-370x78.png 370w\" sizes=\"(max-width: 972px) 100vw, 972px\" \/><\/p>\n<p>\u3053\u306e\u30b9\u30c8\u30ea\u30fc\u30e0(\u5b9f\u969b\u306b\u306f\u5404\u30d3\u30c3\u30c8\u304c\u30ad\u30fc \u30d3\u30c3\u30c8\u30683\u56deXOR\u6f14\u7b97\u3055\u308c\u3066\u3044\u308b)\u3092\u300c\u30b9\u30c8\u30ea\u30fc\u30e0 \u30ad\u30fc\u300d\u3068\u547c\u3076\u3053\u3068\u306b\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u30b9\u30c8\u30ea\u30fc\u30e0\u30ad\u30fc\u306f25000\u30d0\u30a4\u30c8\u9577\u306e\u30b5\u30a4\u30af\u30eb\u3067\u5468\u671f\u6027\u304c\u3042\u308b\u306e\u3067\u300125000(25k)\u30d0\u30a4\u30c8\u306e\u9577\u3055\u306e\u5e73\u6587\u3068\u6697\u53f7\u6587\u304c\u3042\u308c\u3070\u3001\u30ad\u30fc\u3092\u5fa9\u5143\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u5fa9\u53f7\u3059\u308b\u306e\u306b\u5341\u5206\u3068\u3044\u3048\u305d\u3046\u3067\u3059\u3002<\/p>\n<p>\u306a\u306b\u304b\u65e2\u77e5\u306e\u5e73\u6587\u3068\u6697\u53f7\u30c7\u30fc\u30bf\u306e\u30da\u30a2\u3092\u6b21\u306ePython\u306e\u95a2\u6570\u3067\u51e6\u7406\u3059\u308c\u3070\u30b9\u30c8\u30ea\u30fc\u30e0 \u30ad\u30fc\u3092\u5fa9\u5143\u3067\u304d\u307e\u3059\u3002\u3053\u3053\u3067\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 \u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u3001\u4e0e\u3048\u3089\u308c\u305f\u6587\u5b57\u5217\u4e2d\u306e25000\u30d0\u30a4\u30c8\u5206\u306e\u65e2\u77e5\u306e\u5e73\u6587\u30d0\u30a4\u30c8\u306b\u5bfe\u3059\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u5148\u982d4\u30d0\u30a4\u30c8\u5206\u306f\u6697\u53f7\u5316\u3055\u308c\u308b\u3053\u3068\u304c\u306a\u3044\u305f\u3081\u3001\u3053\u3053\u304b\u3089 4 \u3092\u5f15\u3044\u3066\u3044\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u5e73\u6587\u306e\u6587\u5b57\u5217\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9idx+4\u304b\u3089idx+4+25000\u306e\u7bc4\u56f2\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u305f\u3081\u3001\u65e2\u77e5\u306e\u5e73\u6587\u30d5\u30a1\u30a4\u30eb\u306e\u30b5\u30a4\u30ba\u304c50000\u30d0\u30a4\u30c8\u306a\u30890 &lt;= idx &lt; 24998\u306e\u7bc4\u56f2\u304c\u5229\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre>key_len = 25000\r\ndef ror(val, n, width):\r\n    return ((val &amp; ((1&lt;&lt;width)-1)) &gt;&gt; n) | \\\r\n           (val &lt;&lt; (width-n) &amp; ((1&lt;&lt;width)-1)) def recover_stream_key(plain, enc, idx): assert len(plain) == len(enc) assert len(plain) &gt;= 4 + idx + key_len\r\n    plain = io.BytesIO(plain)\r\n    enc = io.BytesIO(enc)\r\n    assert plain.read(4) == enc.read(4)\r\n    plain.seek(idx &amp; (~3), os.SEEK_CUR)\r\n    enc.seek(idx &amp; (~3), os.SEEK_CUR)\r\n    stream_key = io.BytesIO()\r\n    for i in xrange(0, key_len + (idx % 4), 4):\r\n        # read the next plain dword\r\n        p = plain.read(4)\r\n        p = struct.unpack(\"&lt;I\", p)[0] # read the next encrypted dword and undo the bit shifts on it e = enc.read(4) # unswap the byte order e = struct.unpack(\"&gt;I\", e)[0]\r\n            # ROR back 5 bits\r\n        e = ror(e, 5, 32)\r\n        # XOR the plain and normalized encrypted dwords\r\n        k = p^e\r\n        k = struct.pack(\"&lt;I\", k)\r\n        # write the stream key dword to the recovered stream key stream\r\n        if i == 0:\r\n            stream_key.write(k[idx % 4:])\r\n        elif i &lt; key_len:\r\n            stream_key.write(k)\r\n        else: # i == key_len\r\n            stream_key.write(k[:-idx % 4])\r\n    stream_key = stream_key.getvalue()\r\n    assert len(stream_key) == key_len\r\n    return stream_key\r\n<\/pre>\n<p>\u305d\u308c\u3067\u306f\u3044\u3088\u3044\u3088(\u307e\u3060\u4e0d\u5b8c\u5168\u3067\u3059\u304c)\u6b21\u306e\u95a2\u6570\u3092\u4f7f\u3063\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u5fa9\u53f7\u3057\u3066\u3044\u304d\u307e\u3057\u3087\u3046:<\/p>\n<pre>def decrypt(stream_key, enc):\r\n    size = len(enc) - 2\r\n    plain = io.BytesIO(enc)\r\n    stream_key_cyclic = grouper(itertools.cycle(stream_key), 4)\r\n    for i in xrange(0, size&amp;(~3), 4):\r\n        # read the next stream key dword\r\n        sk = \"\".join(stream_key_cyclic.next())\r\n        sk = struct.unpack(\"&lt;I\", sk)[0] # read the next encrypted dword and undo the bit shifts on it e = plain.read(4) # unswap the byte order e = struct.unpack(\"&gt;I\", e)[0]\r\n            # ROR back 5 bits\r\n        e = ror(e, 5, 32)\r\n        # XOR the normalized encrypted dword with the stream key dword to recover\r\n        # the plain dword\r\n        p = e^sk\r\n        p = struct.pack(\"&lt;I\", p)\r\n        plain.seek(-4, os.SEEK_CUR)\r\n        plain.write(p)\r\n    return plain.getvalue()\r\ndef decrypt_file(stream_key, file):\r\n    assert len(stream_key) == key_len\r\n    # leave the first 4 bytes as-is\r\n    file.seek(4, os.SEEK_SET)\r\n    # decrypt the rest of the first 1MB of the file\r\n    enc_data = file.read(0x100000 - 4)\r\n    plain_data = decrypt(stream_key, enc_data)\r\n    file.seek(4, os.SEEK_SET)\r\n    file.write(plain_data)\r\n    # leave the rest of the file as is\r\n<\/pre>\n<p>\u6b8b\u5ff5\u306a\u304c\u3089\u3001\u4e0a\u8a18\u306e\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u30a8\u30c3\u30b8\u30b1\u30fc\u30b9\u306f\u6271\u3048\u3066\u3044\u307e\u305b\u3093:<\/p>\n<ol>\n<li>\u6697\u53f7\u5316\u3055\u308c\u305f\u6700\u521d\u306e2\u30d0\u30a4\u30c8(\u5143\u306e\u30d5\u30a1\u30a4\u30eb\u306e4\u30d0\u30a4\u30c8\u76ee\u304b\u30896\u30d0\u30a4\u30c8\u76ee)\u306f\u30012\u3064\u306e\u30ad\u30fc \u30d3\u30c3\u30c8\u3068\u3057\u304bXOR\u6f14\u7b97\u3055\u308c\u3066\u3044\u306a\u3044\u306e\u3067:\n<ol>\n<li>\u6b8b\u308a\u306e\u30d0\u30a4\u30c8\u3092\u5fa9\u53f7\u3059\u308b\u306b\u306f\u3001idx &gt;= 2 \u306e\u30b9\u30c8\u30ea\u30fc\u30e0 \u30ad\u30fc\u3092\u4f7f\u3046\u5fc5\u8981\u304c\u3042\u308b<\/li>\n<li>\u6700\u521d\u306e2\u30d0\u30a4\u30c8\u3092\u5fa9\u53f7\u3059\u308b\u306b\u306f\u3001idx == 0 \u306e\u30b9\u30c8\u30ea\u30fc\u30e0 \u30ad\u30fc\u3092\u4f7f\u3046\u5fc5\u8981\u304c\u3042\u308b<\/li>\n<\/ol>\n<\/li>\n<li>\u5143\u30d5\u30a1\u30a4\u30eb\u306e\u30b5\u30a4\u30ba\u304c2 (mod 4)\u306b\u7b49\u3057\u304f\u306a\u3051\u308c\u3070\u3001encrypt()\u95a2\u6570\u306blen(plain) != 0 (mod 4)\u304c\u3042\u308b\u3053\u3068\u304b\u3089\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u672b\u5c3e1-2\u30d0\u30a4\u30c8\u306f\u30d5\u30a7\u30fc\u30ba1\u306e\u6700\u7d42\u306e\u7e70\u308a\u8fd4\u3057\u56de\u306b\u3088\u3063\u3066\u3057\u304b\u6697\u53f7\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u306b\u306a\u308b\u3002\u3053\u308c\u3089\u672b\u5c3e1-2\u30d0\u30a4\u30c8\u306e\u5404\u5e73\u6587\u30d3\u30c3\u30c8\u306f1\u3064\u306e\u30ad\u30fc\u30d3\u30c3\u30c8(\u5f97\u3089\u308c\u3066\u3044\u306a\u3044\u30ad\u30fc \u30d3\u30c3\u30c8)\u3068\u3057\u304bXOR\u6f14\u7b97\u304c\u884c\u308f\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u5fa9\u53f7\u3067\u304d\u306a\u3044\u3002<\/li>\n<\/ol>\n<p>\u3055\u3089\u306b<a href=\"https:\/\/blog.malwarebytes.com\/threat-analysis\/2018\/04\/lockcrypt-ransomware\/\">Malwarebytes<\/a>\u304c\u793a\u3057\u305f\u3088\u3046\u306b\u3001\u30d5\u30a1\u30a4\u30eb\u540d\u306f\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u30ad\u30fc\u306e\u30b5\u30d6\u30bb\u30c3\u30c8\u3068\u76f4\u63a5XOR\u6f14\u7b97\u3057\u3066\u6697\u53f7\u5316\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u30d5\u30a1\u30a4\u30eb\u540d\u3082\u5fa9\u53f7\u3067\u304d\u307e\u305b\u3093\u3002\u305f\u3060\u3057\u3001@demonslay335 \u6c0f\u304c\u5fa9\u53f7\u30c4\u30fc\u30eb\u306e\u4e2d\u3067\u4f7f\u3063\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u6697\u53f7\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u9577\u3055\u3092m\u3068\u3057\u305f\u5834\u5408\u3001n &gt;= m \u306e\u9577\u3055\u3092\u3082\u3064\u65e2\u77e5\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u304c\u3042\u308c\u3070\u5fa9\u53f7\u306f\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<p>\u3064\u307e\u308b\u3068\u3053\u308d\u3001\u4efb\u610f\u306e\u9577\u3055\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u5fa9\u5143\u3057\u305f\u3051\u308c\u3070\u3001\u672c\u7a3f\u3067\u8ff0\u3079\u305f\u30b9\u30c8\u30ea\u30fc\u30e0 \u30ad\u30fc\u3060\u3051\u3067\u306a\u304f\u3001\u5b9f\u969b\u306e\u30aa\u30ea\u30b8\u30ca\u30eb\u6697\u53f7\u30ad\u30fc\u304c\u5fc5\u8981\u305d\u3046\u3060\u3001\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002<\/p>\n<h2><a id=\"post-104042-\u30aa\u30ea\u30b8\u30ca\u30eb\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b\"><\/a>\u30aa\u30ea\u30b8\u30ca\u30eb\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b<\/h2>\n<p>\u5b9f\u306f\u3001\u3053\u308c\u307e\u3067\u306e\u5206\u6790\u304b\u3089(XOR\u3092\u52a0\u7b97\u6f14\u7b97\u3068\u3059\u308b<a href=\"https:\/\/en.wikipedia.org\/wiki\/GF(2)\">\u30ac\u30ed\u30a2\u4f53(2)<\/a>\u4e0a\u306e)\u9023\u7acb\u4e00\u6b21\u65b9\u7a0b\u5f0f\u304c\u5f97\u3089\u308c\u3001\u30b9\u30c8\u30ea\u30fc\u30e0 \u30ad\u30fc\u3068\u30aa\u30ea\u30b8\u30ca\u30eb \u30ad\u30fc\u3092\u3053\u306e\u65b9\u7a0b\u5f0f\u3067\u7d50\u3073\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u5206\u6790\u3092\u4e00\u822c\u5316\u3059\u308b\u306a\u3089\u3001\u6b21\u306ePython\u306e\u95a2\u6570\u306b\u3088\u3063\u3066\u3001\u30aa\u30ea\u30b8\u30ca\u30eb \u30ad\u30fc\u3092\u305d\u306e\u30d3\u30c3\u30c8 \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u9593\u3067XOR\u6f14\u7b97\u3057\u305f\u7d50\u679c\u304c\u5f97\u3089\u308c\u3001\u305d\u308c\u304c\u5404\u30b9\u30c8\u30ea\u30fc\u30e0 \u30ad\u30fc\u306e\u30d3\u30c3\u30c8(i \u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u3057\u3066\u4f7f\u7528)\u304c\u751f\u6210\u3055\u308c\u307e\u3059:<\/p>\n<pre class=\"\">key_bitlen = 25000*8\r\ndef k_for_i(i):\r\n    i_dword = i &gt;&gt; 5 # the index of the dword for bit i\r\n    i_offset = i % 32 # the index of bit i in its dword\r\n    i = i + key_bitlen\r\n    k = []\r\n    k.append((i_dword &lt;&lt; 6) + i_offset)\r\n    if i_offset &lt; 16:\r\n        k.append(k[0] - 16)\r\n    else:\r\n        k.append(k[0] + 16)\r\n    k.append((i_dword &lt;&lt; 5) + ((i_offset + 5) % 32))\r\n    return [x % key_bitlen for x in k if x &gt;= 0]\r\n<\/pre>\n<p>\u3064\u307e\u308a\u3001<span style=\"font-family: 'courier new', courier, monospace;\">stream_key[i] == reduce(xor, (key[k] for k in k_for_i(i)))<\/span> \u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002<\/p>\n<p>\u3053\u306e\u95a2\u6570\u306b\u3088\u308a\u3001\u30ac\u30ed\u30a2\u4f53(2)\u4e0a\u306b\u3001\u30aa\u30ea\u30b8\u30ca\u30eb \u30ad\u30fc\u3068\u30b9\u30c8\u30ea\u30fc\u30e0 \u30ad\u30fc\u9593\u306e\u5909\u63db\u3092\u8868\u3059200000x200000\u306e\u975e\u5e38\u306b\u758e\u306a\u884c\u5217\u304c\u751f\u6210\u3055\u308c\u307e\u3059:<\/p>\n<pre>def gen_equations(idx):\r\n    A_i_j_s = []\r\n    for i in xrange(idx &lt;&lt; 3, (idx &lt;&lt; 3) + key_bitlen):\r\n        A_i_j_s.append(k_for_i(i))\r\n    return A_i_j_s\r\n<\/pre>\n<p>\u3053\u306e\u884c\u5217A\u306f\u3001A_i_j_s[i]\u5217\u3060\u3051\u304c1\u3067\u3001\u6b8b\u308a\u306e\u884ci\u306f\u3059\u3079\u30660\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u307e\u305f\u3053\u306e\u884c\u5217\u306f\u5404\u884c\u306b3\u3064\u3057\u304b\u5024\u304c\u306a\u3044\u3068\u3044\u3046\u300c\u975e\u5e38\u306b\u300d\u758e\u306a\u884c\u5217\u306a\u306e\u3067\u3001\u666e\u901a\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u4e0a\u3067\u7dda\u5f62\u4ee3\u6570\u30e2\u30c7\u30eb\u3092\u4f7f\u3063\u3066\u89e3\u304f\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u305f\u3068\u3048\u3070\u6570\u5b66\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e<a href=\"https:\/\/www.sagemath.org\/\">SageMath<\/a>\u3067\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3055\u305b\u307e\u3059:<\/p>\n<pre># fix the following parameters to those of your own\r\nstream_key_idx = 25000 # the stream key idx you recovered\r\nstream_key_path = \"key-stream-idx-25000.bin\" # the path to the stream key you recovered\r\noriginal_key_path = \"key.bin\" # the path to write the original key to\r\nimport itertools\r\nimport struct\r\ndef grouper(iterable, n, fillvalue=None):\r\n    args = [iter(iterable)] * n\r\n    return itertools.izip_longest(fillvalue=fillvalue, *args)\r\ndef str2bits(s):\r\n    bits = []\r\n    for dword in grouper(s, 4):\r\n        dword = \"\".join(dword)\r\n        dword = struct.unpack(\"&lt;I\", dword)[0] bits += [(dword &gt;&gt; i) &amp; 1 for i in xrange(32)]\r\n    return bits\r\ndef bits2str(bits):\r\n    s = []\r\n    for dword_bits in grouper(bits, 32):\r\n        dword = 0\r\n        for i, bit in enumerate(dword_bits):\r\n            dword = dword | (bit &lt;&lt; i)\r\n        s.append(struct.pack(\"&lt;I\", dword))\r\n    return \"\".join(s)\r\nwith open(stream_key_path) as f:\r\n    stream_key = f.read()\r\nassert len(stream_key) == 25000\r\nstream_key_bits = str2bits(stream_key)\r\nY = vector(GF(2), 200000, stream_key_bits)\r\n# create a matrix with the equations for the stream key bit\r\nA_i_j_s = gen_equations(stream_key_idx)\r\nA = matrix(GF(2), 200000, sparse=True)\r\nfor i, A_i_j in enumerate(A_i_j_s):\r\n    for j in A_i_j:\r\n        A[i,j] = 1\r\n# recover the original key bits\r\nX = A.solve_right(Y)\r\nkey_bits = [int(x) for x in X.list()]\r\nkey = bits2str(key_bits)\r\nwith open(original_key_path, 'wb') as f:\r\n    f.write(key)\r\n<\/pre>\n<p>\u691c\u8a3c\u3057\u3066\u307f\u305f\u3068\u3053\u308d 16GB \u306e RAM \u3092\u642d\u8f09\u3057\u305f Intel Core i7-4790 CPU \u3068 SageMath \u4e0a\u3067\u3053\u306e\u65b9\u7a0b\u5f0f\u3092\u6570\u5341\u5206\u304b\u3089\u6570\u767e\u5206\u7a0b\u5ea6\u3067\u89e3\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002\u91cd\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u5b8c\u5168\u306b\u5fa9\u5143\u3057\u305f\u3044\u306a\u3089\u3001\u3053\u308c\u306f\u5341\u5206\u5b9f\u7528\u7684\u3068\u3044\u3048\u308b\u3067\u3057\u3087\u3046\u3002\u306a\u304a\u3001idx\u304c25000\u306e\u500d\u6570\u3067\u3042\u308c\u3070\u3001\u51e6\u7406\u304c\u901f\u304f\u306a\u308b\u3088\u3046\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u884c\u5217\u304c\u884c\u968e\u6bb5\u5f62\u306b\u8fd1\u304f\u306a\u308b\u305f\u3081\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u5341\u5206\u306b\u5927\u304d\u3044(50KB\u4ee5\u4e0a\u306a\u3069)\u65e2\u77e5\u306e\u5e73\u6587\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308b\u306a\u3089idx = 25000\u3068\u3059\u308b\u3053\u3068\u3092\u63a8\u5968\u3057\u307e\u3059\u3002<\/p>\n<h3><a id=\"post-104042-\u30d5\u30a1\u30a4\u30eb\u3092\u5fa9\u53f7\u3059\u308b\"><\/a>\u30d5\u30a1\u30a4\u30eb\u3092\u5fa9\u53f7\u3059\u308b<\/h3>\n<p>\u4ee5\u4e0a\u3092\u307e\u3068\u3081\u307e\u3059\u3068\u3001\u30de\u30eb\u30a6\u30a7\u30a2\u304c\u5229\u7528\u3059\u308b\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b\u624b\u9806\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<ol>\n<li>\u6697\u53f7\u5316\u6e08\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u3001\u6697\u53f7\u5316\u3055\u308c\u308b\u524d\u306e\u5e73\u6587\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3059\u3002\u3053\u306e\u5143\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u5c11\u306a\u304f\u3068\u3082 25006 \u30d0\u30a4\u30c8\u4ee5\u4e0a\u306e\u3082\u306e\u304c\u5fc5\u8981\u3067\u3059\u3002\n<ol>\n<li>\u6697\u53f7\u5316\u524d\u306e\u5143\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3059\u308b\u306b\u306f\u3001\u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306b\u3088\u3063\u3066\u6697\u53f7\u5316\u3055\u308c\u305f\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3068\u540c\u3058\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u5225\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u4e0a\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304b\u3089\u3001\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u3092\u30d2\u30f3\u30c8\u3068\u3057\u3066\u3001\u6697\u53f7\u5316\u3055\u308c\u305f DLL \u30d5\u30a1\u30a4\u30eb\u3068\u5bfe\u5fdc\u3059\u308b\u5e73\u6587DLL\u30d5\u30a1\u30a4\u30eb\u3092\u63a2\u3059\u3068\u3088\u3044\u3067\u3057\u3087\u3046\u3002<\/li>\n<\/ol>\n<\/li>\n<li>\u307e\u3060\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f<a href=\"https:\/\/www.python.org\/downloads\/release\/python-2715\/\">Python 2.7<\/a>\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/li>\n<li><a href=\"https:\/\/github.com\/pan-unit42\/public_tools\/tree\/master\/lockcrypt\">recover_stream_key.py<\/a>\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f7f\u3044\u3001\u6697\u53f7\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3068\u305d\u3046\u3067\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u306e\u30da\u30a2\u304b\u3089\u7279\u5b9a\u306eidx\u7528\u306e\u30b9\u30c8\u30ea\u30fc\u30e0 \u30ad\u30fc\u3092\u5fa9\u5143\u3057\u307e\u3059\u3002\n<ol>\n<li>\u5148\u306b\u8aac\u660e\u3057\u305f\u3068\u304a\u308a\u3001\u5341\u5206\u306b\u5927\u304d\u306a\u5e73\u6587\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308b\u306a\u3089idx = 25000\u306b\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.sagemath.org\/download-windows.html\">SageMath\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/a><\/li>\n<li>SageMath Jupyter Notebook\u3092\u958b\u304d\u3001\u300c\u30aa\u30ea\u30b8\u30ca\u30eb\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b\u300d\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b 3 \u3064\u306e\u30b3\u30fc\u30c9 \u30b9\u30cb\u30da\u30c3\u30c8\u3092\u4e0a\u304b\u3089\u9806\u306b\u30da\u30fc\u30b9\u30c8\u3057\u3066\u304b\u3089\u5b9f\u884c\u3057\u307e\u3059(\u8a33\u6ce8: \u65e5\u672c\u8a9e\u7248\u3067\u306f\u30b3\u30fc\u30c9\u90e8\u5206\u3092\u753b\u50cf\u3068\u3057\u3066\u8a18\u8f09\u3057\u3066\u304a\u308a\u307e\u3059\u306e\u3067\u3001\u3053\u3053\u3067\u306f<a href=\"https:\/\/blog.paloaltonetworks.com\/2018\/07\/unit42-decrypting-lockcrypt-ransomware\/\">\u82f1\u8a9e\u30d6\u30ed\u30b0<\/a>\u306e\u300cRecovering the original key\u300d\u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u30b3\u30d4\u30fc\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059)\u3002\u3053\u308c\u306b\u3088\u308a\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3057\u307e\u3059\u3002\n<ol>\n<li>\u91cd\u8981: \u30b3\u30fc\u30c9\u5b9f\u884c\u524d\u306b\u5fc5\u305a\u30b9\u30cb\u30da\u30c3\u30c8\u4e0a\u90e8\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b3\u3064\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u3054\u81ea\u8eab\u306e\u3082\u306e\u306b\u66f8\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002<\/li>\n<li>\u691c\u8a3c\u306b\u3088\u308c\u3070\u3001\u3053\u306e\u6bb5\u968e\u306b20\u5206\u304b\u3089\u6570\u6642\u9593\u304b\u304b\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n<\/li>\n<li>\u672c\u7a3f\u672b\u5c3e\u306e\u30ea\u30f3\u30af\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305fdecryptor.py\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3001\u6697\u53f7\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u5fa9\u53f7\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n<p>\u672c\u7a3f\u306e\u5206\u6790\u3068\u30b9\u30af\u30ea\u30d7\u30c8\u30d5\u30a1\u30a4\u30eb\u304c\u3001\u5f53\u8a72\u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306e\u88ab\u5bb3\u306b\u906d\u308f\u308c\u305f\u65b9\u3005\u306e\u5931\u308f\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u5fa9\u5143\u3059\u308b\u304a\u5f79\u306b\u7acb\u3066\u3070\u5e78\u3044\u3067\u3059\u3002<\/p>\n<p>\u4e21\u30b9\u30af\u30ea\u30d7\u30c8\u306f<a href=\"https:\/\/github.com\/pan-unit42\/public_tools\/tree\/master\/lockcrypt\">\u3053\u3061\u3089<\/a> \u306eUnit 42\u30c1\u30fc\u30e0\u306eGitHub\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6982\u8981 LockCrypt\u306fEncryptServer2018\u3068\u3044\u3046\u5225\u540d\u3067\u3082\u77e5\u3089\u308c\u308b\u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u30d5\u30a1\u30df\u30ea\u3067\u30012017\u5e74\u306e\u534a\u3070\u304b\u3089\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u4e0a\u306b\u51fa\u56de\u308a\u306f\u3058\u3081\u3066\u4ee5\u964d\u4f9d\u7136\u3068\u3057\u3066\u6d3b\u767a\u3067\u3059\u3002\u3053\u306e\u30de\u30eb\u30a6\u30a7\u30a2\u306f\u30ea\u30d0\u30fc\u30b9\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea<\/p>\n","protected":false},"author":257,"featured_media":103976,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[4321,3057,4428],"tags":[6957,6958,6157],"product_categories":[],"coauthors":[959],"class_list":["post-104042","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-threat-research","category-ransomware-ja","category-threat-research-ja","tag-decryptor-ja","tag-lockcrypt","tag-tool-ja"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>LockCrypt \u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306e\u5fa9\u53f7<\/title>\n<meta name=\"description\" content=\"\u672c\u7a3f\u3067\u306f\u3001LockCrypt\u30de\u30eb\u30a6\u30a7\u30a2\u306e\u81ea\u5bb6\u88fd\u6697\u53f7\u306b\u3064\u3044\u3066\u5206\u6790\u3057\u305f\u7d50\u679c\u3068\u305d\u306e\u89e3\u8aad\u65b9\u6cd5\u3001\u307e\u305f25KB\u7a0b\u5ea6\u306e\u3054\u304f\u5c0f\u3055\u3044\u5e73\u6587\u306e\u307f\u3067\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LockCrypt \u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306e\u5fa9\u53f7\" \/>\n<meta property=\"og:description\" content=\"\u672c\u7a3f\u3067\u306f\u3001LockCrypt\u30de\u30eb\u30a6\u30a7\u30a2\u306e\u81ea\u5bb6\u88fd\u6697\u53f7\u306b\u3064\u3044\u3066\u5206\u6790\u3057\u305f\u7d50\u679c\u3068\u305d\u306e\u89e3\u8aad\u65b9\u6cd5\u3001\u307e\u305f25KB\u7a0b\u5ea6\u306e\u3054\u304f\u5c0f\u3055\u3044\u5e73\u6587\u306e\u307f\u3067\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/\" \/>\n<meta property=\"og:site_name\" content=\"Unit 42\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-27T12:00:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-02-05T05:21:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit42-blog-600x300-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Tomer Harpaz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"LockCrypt \u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306e\u5fa9\u53f7","description":"\u672c\u7a3f\u3067\u306f\u3001LockCrypt\u30de\u30eb\u30a6\u30a7\u30a2\u306e\u81ea\u5bb6\u88fd\u6697\u53f7\u306b\u3064\u3044\u3066\u5206\u6790\u3057\u305f\u7d50\u679c\u3068\u305d\u306e\u89e3\u8aad\u65b9\u6cd5\u3001\u307e\u305f25KB\u7a0b\u5ea6\u306e\u3054\u304f\u5c0f\u3055\u3044\u5e73\u6587\u306e\u307f\u3067\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/","og_locale":"ja_JP","og_type":"article","og_title":"LockCrypt \u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306e\u5fa9\u53f7","og_description":"\u672c\u7a3f\u3067\u306f\u3001LockCrypt\u30de\u30eb\u30a6\u30a7\u30a2\u306e\u81ea\u5bb6\u88fd\u6697\u53f7\u306b\u3064\u3044\u3066\u5206\u6790\u3057\u305f\u7d50\u679c\u3068\u305d\u306e\u89e3\u8aad\u65b9\u6cd5\u3001\u307e\u305f25KB\u7a0b\u5ea6\u306e\u3054\u304f\u5c0f\u3055\u3044\u5e73\u6587\u306e\u307f\u3067\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002","og_url":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/","og_site_name":"Unit 42","article_published_time":"2018-07-27T12:00:13+00:00","article_modified_time":"2020-02-05T05:21:31+00:00","og_image":[{"width":600,"height":300,"url":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit42-blog-600x300-1.jpg","type":"image\/jpeg"}],"author":"Tomer Harpaz","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/#article","isPartOf":{"@id":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/"},"author":{"name":"Tomer Harpaz","@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/2125bf30b8a8d015659f4a19b44dff59"},"headline":"LockCrypt \u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306e\u5fa9\u53f7","datePublished":"2018-07-27T12:00:13+00:00","dateModified":"2020-02-05T05:21:31+00:00","mainEntityOfPage":{"@id":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/"},"wordCount":118,"commentCount":0,"image":{"@id":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/#primaryimage"},"thumbnailUrl":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit42-blog-600x300-1.jpg","keywords":["decryptor","LockCrypt","Tool"],"articleSection":["Threat Research","\u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2","\u8105\u5a01\u30ea\u30b5\u30fc\u30c1"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/","url":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/","name":"LockCrypt \u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306e\u5fa9\u53f7","isPartOf":{"@id":"https:\/\/unit42.paloaltonetworks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/#primaryimage"},"image":{"@id":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/#primaryimage"},"thumbnailUrl":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit42-blog-600x300-1.jpg","datePublished":"2018-07-27T12:00:13+00:00","dateModified":"2020-02-05T05:21:31+00:00","author":{"@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/2125bf30b8a8d015659f4a19b44dff59"},"description":"\u672c\u7a3f\u3067\u306f\u3001LockCrypt\u30de\u30eb\u30a6\u30a7\u30a2\u306e\u81ea\u5bb6\u88fd\u6697\u53f7\u306b\u3064\u3044\u3066\u5206\u6790\u3057\u305f\u7d50\u679c\u3068\u305d\u306e\u89e3\u8aad\u65b9\u6cd5\u3001\u307e\u305f25KB\u7a0b\u5ea6\u306e\u3054\u304f\u5c0f\u3055\u3044\u5e73\u6587\u306e\u307f\u3067\u6697\u53f7\u30ad\u30fc\u3092\u5fa9\u5143\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/#primaryimage","url":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit42-blog-600x300-1.jpg","contentUrl":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit42-blog-600x300-1.jpg","width":600,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/unit42.paloaltonetworks.com\/ja\/unit42-decrypting-lockcrypt-ransomware\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/unit42.paloaltonetworks.com\/ja\/"},{"@type":"ListItem","position":2,"name":"LockCrypt \u30e9\u30f3\u30b5\u30e0\u30a6\u30a7\u30a2\u306e\u5fa9\u53f7"}]},{"@type":"WebSite","@id":"https:\/\/unit42.paloaltonetworks.com\/#website","url":"https:\/\/unit42.paloaltonetworks.com\/","name":"Unit 42","description":"Palo Alto Networks","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/unit42.paloaltonetworks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/2125bf30b8a8d015659f4a19b44dff59","name":"Tomer Harpaz","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/image\/4ffb3c2d260a0150fb91b3715442f8b3","url":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit-news-meta.svg","contentUrl":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit-news-meta.svg","caption":"Tomer Harpaz"},"url":"https:\/\/unit42.paloaltonetworks.com\/ja\/author\/tomer-harpaz\/"}]}},"_links":{"self":[{"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/posts\/104042","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/users\/257"}],"replies":[{"embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/comments?post=104042"}],"version-history":[{"count":2,"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/posts\/104042\/revisions"}],"predecessor-version":[{"id":104072,"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/posts\/104042\/revisions\/104072"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/media\/103976"}],"wp:attachment":[{"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/media?parent=104042"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/categories?post=104042"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/tags?post=104042"},{"taxonomy":"product_categories","embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/product_categories?post=104042"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/ja\/wp-json\/wp\/v2\/coauthors?post=104042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}