Depends on the type of zoom you want. Do you want the camera to actually move its position closer to the target, or do you want the camera to zoom (like an optical zoom lens would give you)?
If you'd like the camera to actually change position you should linearly interpolate (lerp) the position of the camera between its current position and the target position by a percentage. If the camera is at (0, 0, 0), and the target is at (10, 10, 10), and you want to zoom in 25% then you'd find the forward of the camera to the target, which in this case is (10, 10, 10), and multiply that by 0.25, which is 25%, and you'd get (2.5, 2.5, 2.5), which is the new position of the camera, and is closer to the target now.
If you'd simply like an optical zoom effect, then you need to restrict the camera's field of view within its projection matrix. Keep track of the default FOV (field of view), so you can return to your normal 'zoom' later on. You can have a zoom level, which I use an integer for, and if your zoom is 4x, then you divide your default FOV by 4, and get 22.5. Use 22.5 degrees as your FOV when creating a new projection matrix for the camera. Don't forget to convert degrees to radians when doing this.
If you'd like to see a zoom setup, I have zoom implemented in the free-camera in the engine in my signiture. It's open source if you'd like. Code you'll want is in FreeCamera.cs