This is the beauty of PolyPaint!
Open your model in ZBrush and import your texture into the Texture palette. Then apply the texture to the model using the Tool >> Texture Map thumbnail. (Remember that you’ll probably have to flip the map vertically so that it wraps properly.)
Next, subdivide your model until it has a number of polygons that is approximately equal to the number of pixels in your texture. (A 1K texture is about 1 million polys. 2K is about 4 million. 4K is about 12 million.) Use Tool >> Polypaint >> Polypaint From Texture to convert the texture to PolyPaint.
From here you can use the various brushes from the Brush palette to sculpt and paint whatever new details you wish. Once done, use Tool >> Texture Map >> Create >> New From Polypaint to get your painted detail back as a new texture that you can then Clone to the Texture palette and export from ZBrush. And of course you can use Tool >> Normal Map to create that, which you would also Clone to the Texture palette for export.
Easy!
The great thing about PolyPaint is that you can go from texture to paint and back again at any time. And of course since PolyPaint doesn’t use UV’s this means that you can also do some amazing things like converting a texture to paint, change the UV mapping and then convert the paint back to texture – letting you completely change a model’s UV’s without sacrificing anything that has already been painted.